【发布时间】:2017-01-13 16:09:50
【问题描述】:
我正在尝试做与How to short circuit Array.forEach like calling break?相反的事情
arr = [{id:"231"}, {id:"343"}];
arr.forEach(function (item) {
if (item.id === "231") {
arr.splice(arr.indexOf(item), 1);
return;
}
});
基于此运行代码时,if只运行一次,如果项目顺序颠倒它运行两次,为什么?
【问题讨论】:
-
您的代码有语法错误,无法运行。无论如何,不要尝试在中游修改数组。这不会有好的结局。相反,创建一个没有您不想要的项目的新数组,可能使用
filter。 -
而且,
.forEach()提供了第二个参数,即index。无需使用.indexOf()再次查找元素。 -
更喜欢
filter()而不是splice():var filtered = arr.filter(item => item.id !== "231")
标签: javascript node.js asynchronous