Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Использовать метод splice в многомерном массиве (https://javascript.ru/forum/misc/45016-ispolzovat-metod-splice-v-mnogomernom-massive.html)

dima*** 11.02.2014 08:52

Использовать метод 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 в многомерном массиве?Если можно,то научите,пожалуйста.Или ссылку где почитать.

ksa 11.02.2014 09:07

Цитата:

Сообщение от dima***
А можно ли использовать метод splice в многомерном массиве?

В JS нет, как таковых, многомерных массивов... Но есть массив, элементы которого так же есть массив.
Т.о. метод применяется только к элементу массива. Вот только вопрос что ты от него ждешь? :)

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

dima*** 11.02.2014 09:16

Ага,понятно.А убрать нулевые элементы(1,3,5) с помощью splice нельзя?

kobezzza 11.02.2014 09:20

Цитата:

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

alert(
    [[1,2],[3,4],[5,6]].map(function (el) { return el.slice(1); })
);

dima*** 11.02.2014 09:30

А можно без функции,а с помощью цикла for?Чтобы уж до конца закрыть тему.

kobezzza 11.02.2014 09:38

Цитата:

Сообщение от dima*** (Сообщение 297071)
А можно без функции,а с помощью цикла for?Чтобы уж до конца закрыть тему.

Разумеется, можно ещё много как, но лучше для таких целей юзать map/reduce.

dima*** 11.02.2014 09:42

Да,это понятно.Просто,не знаю,как объяснить. Хотелось бы,чтобы было самое примитивное решение(использовать for и splice-больше ничего-так можно?),а потом уже более прогрессивные решения.

kobezzza 11.02.2014 09:45

Цитата:

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);

ksa 11.02.2014 09:46

Цитата:

Сообщение от 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);

dima*** 11.02.2014 09:47

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


Часовой пояс GMT +3, время: 22:20.