2015-07-11 64 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