2015-07-11 63 views
0

晚上好,滤镜阵列与绑定值

我想让这将返回过滤阵列不包含传递给这个函数作为arguments值的功能。

这是我一直在使用的代码,但它并没有像预期的那样返回过滤数组,但是,如果我console.log所有传递参数过滤callbackfn,它看到它们,因为我绑定了arguments[i]第元素。

下面的代码:

function destroyer(arr) { 
    for(var i = 1; i < arguments.length; i++){ 
    arr.filter(seeker.bind(null, arguments[i])); 
    } 
    return arr; 
} 

function seeker(arg, value, index, array){ 
    console.log(arg, value, index, array); 
    return value !== arg; 
} 
destroyer([1, 2, 3, 1, 2, 3], 2, 3); 

这是console.logs的截图:

enter image description here

非常感谢您的帮助。

回答

4

.filter不会更改原始数组,它会返回一个新的数组,并进行任何更改。您需要将此新阵列重新分配给arr变量。

function destroyer(arr) { 
 
    for(var i = 1; i < arguments.length; i++){ 
 
    arr = arr.filter(seeker.bind(null, arguments[i])); 
 
    } 
 
    return arr; 
 
} 
 

 
function seeker(arg, value, index, array){ 
 
    return value !== arg; 
 
} 
 
console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3));

+0

我觉得很愚蠢,并幸运的在同一时间。谢谢你,先生。谢谢。 – lorenzopieri