//题目要求:实现一个摧毁(destroyer)函数,第一个参数是待摧毁的数组,其余的参数是待摧毁的值。
//我的代码:
function destroyer(arr) {
var ary = arr.filter(function(cur){
for(var i=0; i<this.length; i++){
return cur !== this[i+1];
}
}, arguments);
return ary;
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3)
//->执行后ary =[1, 3, 1, 3] ,错误!
//->正确答案应是:[1,1]问题:目前函数执行后,返回的数组只筛除第一个待摧毁的值,第二个无法筛除。我知道是因为filter函数的循环里面return后就跳出循环了,但是怎么才能让它继续检测其余的待摧毁值并筛除?谢谢了!!!
1 回答
我吃西瓜很快
TA贡献39条经验 获得超13个赞
function destroyer(arr){ var keys=[]; for(var i=1;i<arguments.length;++i) keys[i-1]=arguments[i]; return arr.filter(function(a){ return keys.indexOf(a)==-1 }) }
添加回答
举报
0/150
提交
取消