【发布时间】:2014-09-08 21:05:51
【问题描述】:
我正在尝试在forEach 循环中删除数组中的一个元素,但是我遇到了我所看到的标准解决方案的问题。
这是我目前正在尝试的:
review.forEach(function(p){
if(p === '\u2022 \u2022 \u2022'){
console.log('YippeeeE!!!!!!!!!!!!!!!!')
review.splice(p, 1);
}
});
我知道它正在进入if,因为我在控制台中看到了YippeeeeeE!!!!!!!!!!!!!。
我的问题:我知道我的 for 循环和 if 逻辑是合理的,但我从数组中删除当前元素的尝试失败了。
更新:
试过Xotic750的回答,还是没有去掉元素:
这是我代码中的函数:
review.forEach(function (item, index, object) {
if (item === '\u2022 \u2022 \u2022') {
console.log('YippeeeE!!!!!!!!!!!!!!!!')
object.splice(index, 1);
}
console.log('[' + item + ']');
});
这是数组仍未删除的输出:
[Scott McNeil]
[reviewed 4 months ago]
[ Mitsubishi is AMAZING!!!]
YippeeeE!!!!!!!!!!!!!!!!
[• • •]
很明显它会按照指示进入 if 语句,但也很明显 [• • •] 仍然存在。
【问题讨论】:
-
您使用
forEach有什么原因吗?如果要删除项目,最合适的函数是filter。 -
如果您需要保留对原始数组的引用,则不需要。
-
是的,我们希望保留对原始数组的引用。
-
从您的问题中不清楚,您遇到的实际问题是什么?你能举个例子,也许是一个jsFiddle?看来您可能应该使用
index属性而不是item作为您的splice -
@Xotic750 抱歉,补充说明。
标签: javascript foreach