Как удалить каждый второй и третий элемент из массива в Javascript?
Я хочу удалить каждый второй и третий элемент из массива в Javascript.
Мой массив выглядит так:
var fruits = ["Banana", "yellow", "23", "Orange", "orange", "12", "Apple", "green", "10"];
Теперь я хочу удалить каждый второй и третий элемент. Результат будет выглядеть так:
["Banana", "Orange", "Apple"]
Я попытался использовать for-loop и splice:
for (var i = 0; fruits.length; i = i+3) {
fruits.splice(i+1,0);
fruits.splice(i+2,0);
};
Конечно, это возвращает пустой массив, потому что элементы удаляются, пока цикл все еще выполняется. Как я могу сделать это правильно?
Спасибо.
6 ответов:
Вы можете подойти к этому с другого угла и
push()
значение, которое вы не хотите удалять в другой массив:Этот подход, возможно, не так скуп, как использованиеvar firstFruits = [] for (var i = 0; i < fruits.length; i = i+3) { firstFruits.push(fruits[i]); };
splice()
, но я думаю, что вы видите выигрыш в плане читаемости.
Это работает для меня.
var fruits = ["Banana", "yellow", "23", "Orange", "orange", "12", "Apple", "green", "10","Pear","something","else"]; for(var i = 0; i < fruits.length; i++) { fruits.splice(i+1,2); } //fruits = Banana,Orange,Apple,Pear
Вот демонстрация, которая иллюстрирует это немного лучше: http://jsfiddle.net/RaRR7/
Можно использовать фильтр:
var filtered = [ "Banana", "yellow", "23", "Orange", "orange", "12", "Apple", "green", "10" ].filter(function(_, i) { return i % 3 === 0; })
Возвращает:
["Banana", "Orange", "Apple"]