Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.02.2014, 08:52
Профессор
Отправить личное сообщение для dima*** Посмотреть профиль Найти все сообщения от dima***
 
Регистрация: 13.12.2012
Сообщений: 283

Использовать метод splice в многомерном массиве
Метод splice

arr.splice(index[, deleteCount, elem1, ..., elemN])
Удалить deleteCount элементов, начиная с номера index, а затем вставить elem1, ..., elemN на их место.

var arr = ["Я", "изучаю", "JavaScript"];
arr.splice(1, 1);  // начиная с позиции 1, удалить 1 элемент
alert(arr); //  осталось ["Я", "JavaScript"]

А можно ли использовать метод splice в многомерном массиве?Если можно,то научите,пожалуйста.Или ссылку где почитать.

Последний раз редактировалось dima***, 11.02.2014 в 08:57.
Ответить с цитированием
  #2 (permalink)  
Старый 11.02.2014, 09:07
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

Сообщение от dima***
А можно ли использовать метод splice в многомерном массиве?
В JS нет, как таковых, многомерных массивов... Но есть массив, элементы которого так же есть массив.
Т.о. метод применяется только к элементу массива. Вот только вопрос что ты от него ждешь?

var a=[[1,2],[3,4],[5,6]];
a.splice(1,1);
alert(a);

Последний раз редактировалось ksa, 11.02.2014 в 09:10.
Ответить с цитированием
  #3 (permalink)  
Старый 11.02.2014, 09:16
Профессор
Отправить личное сообщение для dima*** Посмотреть профиль Найти все сообщения от dima***
 
Регистрация: 13.12.2012
Сообщений: 283

Ага,понятно.А убрать нулевые элементы(1,3,5) с помощью splice нельзя?
Ответить с цитированием
  #4 (permalink)  
Старый 11.02.2014, 09:20
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от dima*** Посмотреть сообщение
Ага,понятно.А убрать нулевые элементы(1,3,5) с помощью splice нельзя?
alert(
    [[1,2],[3,4],[5,6]].map(function (el) { return el.slice(1); })
);
__________________
kobezzza
code monkey
Ответить с цитированием
  #5 (permalink)  
Старый 11.02.2014, 09:30
Профессор
Отправить личное сообщение для dima*** Посмотреть профиль Найти все сообщения от dima***
 
Регистрация: 13.12.2012
Сообщений: 283

А можно без функции,а с помощью цикла for?Чтобы уж до конца закрыть тему.
Ответить с цитированием
  #6 (permalink)  
Старый 11.02.2014, 09:38
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от dima*** Посмотреть сообщение
А можно без функции,а с помощью цикла for?Чтобы уж до конца закрыть тему.
Разумеется, можно ещё много как, но лучше для таких целей юзать map/reduce.
__________________
kobezzza
code monkey
Ответить с цитированием
  #7 (permalink)  
Старый 11.02.2014, 09:42
Профессор
Отправить личное сообщение для dima*** Посмотреть профиль Найти все сообщения от dima***
 
Регистрация: 13.12.2012
Сообщений: 283

Да,это понятно.Просто,не знаю,как объяснить. Хотелось бы,чтобы было самое примитивное решение(использовать for и splice-больше ничего-так можно?),а потом уже более прогрессивные решения.
Ответить с цитированием
  #8 (permalink)  
Старый 11.02.2014, 09:45
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
for и splice-больше ничего-так можно?
Да.

var a = [[1,2],[3,4],[5,6]];

for (var i = 0; i < a.length; i++) {
    a[i].splice(0, 1);
}

alert(a);
__________________
kobezzza
code monkey
Ответить с цитированием
  #9 (permalink)  
Старый 11.02.2014, 09:46
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

Сообщение от dima***
А убрать нулевые элементы(1,3,5) с помощью splice нельзя?
Крути цикл по первому массиву, потом убирай тот "нулевой элемент"...

var a=[[1,2],[3,4],[5,6]];
for (var i=0; i<a.length; i++) a[i].splice(0,1);
alert(a);
Ответить с цитированием
  #10 (permalink)  
Старый 11.02.2014, 09:47
Профессор
Отправить личное сообщение для dima*** Посмотреть профиль Найти все сообщения от dima***
 
Регистрация: 13.12.2012
Сообщений: 283

Ага.Спасибо большое.
Также ,вроде,делал не получалось-
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить количество элементов в многомерном массиве Dima00782 Общие вопросы Javascript 3 12.06.2010 14:15