【发布时间】:2015-08-01 23:00:19
【问题描述】:
我是 JS 新手,无法理解“forEach”方法。
为了帮助说明,假设我有 2 个数组。
第一个:一个包含 1000 个来自字典的随机单词的数组。 第二个:一个包含 10 个“停用词”(我想从第一个数组中过滤掉的词)的数组。
如果我坐下来编写一个接受这两个数组参数的函数,我的直觉会告诉我这样编码:
function cleanSet(theSet, stoppers){
for(var i=0;i<theSet.length;i++){
for(var j=0; j<stoppers.length;j++){
if(theSet[i] === stoppers[j]){
theSet.splice(i,1);
}
}
}
return theSet;
}
但是,当我在编写此程序时尝试使用 forEach 时,它不起作用:
function cleanerSet(theSet, stoppers){
theSet.forEach(function(setWord,i){
stoppers.forEach(function(stopper, j){
if(theSet[i] === stopper[j]){
theSet.splice(i,1);
}
});
});
return theSet;
}
为什么“cleanerSet”不能像“cleanSet”那样工作?
【问题讨论】:
-
stopper[j]错误:stopper的实际值是多少?可以使用setWord和stopper作为它们的值来删除索引本身。 -
您确定第一个版本可以正常工作吗?在这两个版本中,您都在修改原始数据结构。 . . .这不是一个好主意,可能会引入错误
标签: javascript arrays for-loop foreach