的任务是:Array.Filter不更新阵列
你将被提供一个初始阵列(在 破坏者函数的第一个参数),随后是一个或多个参数。从初始数组中删除所有与这些 参数值相同的 元素。
,同时通过它的工作,我发现了一些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.log
S IN的isItIn
原来的写作表明它正在正确接收的参数(或者只要我想,以确定至少,
请注意,我已经解决了通过其他途径的问题,我不是在寻找一个解决问题的办法,仅仅是在我的初始码时出现错误的解释。
哦,我...如果你有任何想法,我已经多久在那盯着, – MrB