У меня есть этот код, который должен перебирать каждый элемент в массиве, удаляя элементы на основе некоторого условия:
//iterate over all items in an array
//if the item is "b", remove it.
var array = ["a", "b", "c"];
array.forEach(function(item) {
if(item === "b") {
array.splice(array.indexOf(item), 1);
}
console.log(item);
});
Требуемый вывод:
a
b
c
Фактический выход:
a
b
Очевидно, что метод native forEach не проверяет после каждой итерации, был ли элемент удален, поэтому, если это то, то следующий элемент пропускается. Есть ли лучший способ сделать это, помимо переопределения метода forEach или реализации моего собственного класса для использования вместо массива?
Изменить - в дополнение к моему комментарию, я полагаю, что решение состоит в том, чтобы просто использовать стандарт для цикла. Не стесняйтесь отвечать, если у вас есть лучший способ.