【发布时间】:2017-01-23 09:04:10
【问题描述】:
任务是:
您将获得一个初始数组(第一个参数在 destroyer 函数),后跟一个或多个参数。移除所有 初始数组中与这些具有相同值的元素 论据。
在处理它时,我发现了一些我难以理解的 Array.filter 行为:
function destroyer(arr) {
for (var i = 1; i<arguments.length; i++){
toDelete = arguments[i];
arr.filter(isItIn);
}
return arr;
}
function isItIn(item, undefined, array){
return item!=toDelete;
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
我的意图是遍历参数的 1+ 项,每次调用 arr.filter。 Arr.filter 然后调用isItIn 检查当前检查的项目是否是我正在搜索的项目。但是,arr 原封不动地返回。当我将isItIn 更改为:
function isItIn(item, undefined, array){
return item==1;
}
进行测试,它仍然没有改变,但是console.logs 在isItIn 的原始写作中表明它正在正确接收参数(或者至少我认为可以确定。
请注意,我已经通过另一条途径解决了这个问题,我不是在寻找解决问题的方法,只是解释我的初始代码哪里出错了。
【问题讨论】:
标签: javascript arrays filter