猿问

求大神帮我看下这题:JS中使用filter方法过滤数组实现摧毁(destroyer)函数

//题目要求:实现一个摧毁(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后就跳出循环了,但是怎么才能让它继续检测其余的待摧毁值并筛除?谢谢了!!!


慕丝0699092
浏览 1603回答 1
1回答

我吃西瓜很快

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   }) }
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答