我有这样的一段代码,它应该遍历数组中的每个项,并根据某些条件删除其中的项:
//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
显然,原生的forEach方法在每次迭代后不会检查项目是否已被删除,因此如果删除了该项目,则会跳过下一个项目。除了覆盖forEach方法或实现自己的类以代替数组之外,有没有更好的方法来解决这个问题?
编辑-根据我的评论,我认为解决方案就是使用标准的for循环。如果您有更好的方法,请随便回答。