2016-07-26 101 views
0

我正在處理一個問題,在這裏我提供了一個初始數組(第一個參數在驅逐函數中),後面跟着一個或多個參數。我需要從初始數組中刪除與這些參數具有相同值的所有元素。.filter方法中的Javascript參數

函數只需要1個參數(數組),並且可以有任意數量的附加參數,我可以選擇它作爲「arguments [index]」。

這裏是我的代碼到現在:

function destroyer(arr) { 
    newArr= [ ]; 
    newArr = arr.filter(function(x){ 
     return x !== arguments[2]; //argumets[2] is equal to 3 
    }); 
    return newArr; 
} 
destroyer([1, 2, 3, 1, 2, 3], 2, 3); 
// => returns [1, 2, 3, 1, 2, 3]; 

但如果我進入3,而不是爭論[2],在函數返回[1,2,1,2]。 發生了什麼事?

此外,如何循環代碼來測試所有其他參數,如果我不能在循環中的函數?

回答

0

參數指的是第二個函數的參數 你可以做這樣的事情

 function destroyer(arr) { 
    newArr= [ ]; 
var args = arguments; 
    newArr = arr.filter(function(x){ 
     return x !== args[2]; 
    }); 
    return newArr; 
} 
destroyer([1, 2, 3, 1, 2, 3], 2, 3); 
0

首先,頂端destroyer參數的引用。然後使用內部的filter函數。

function destroyer(arr) { 
    newArr= [ ]; var args = arguments; 
    newArr = arr.filter(function(x){ 
     return x !== args[2]; //destoryer's arguments[2] is equal to 3 
    }); 
    return newArr; 
} 

destroyer([1, 2, 3, 1, 2, 3], 2, 3); 
+0

謝謝!但是,我如何檢查不僅僅是args [2],而是args [arr.length-1]除0之外的其他參數?我可以在一個過濾器函數內創建一個循環,但是當我使用第一個返回時,它將會取消... –

+0

只需在您完成所需的一切之後,不要返回。我不清楚你需要做什麼循環,所以我不知道如何幫助你更多的。想給我們更多關於你需要做什麼的想法? – Whothehellisthat

+0

我需要刪除(過濾)我的參數[0](數組)中的元素,以及其他所有參數,我可以根據需要有多個參數 - 參數[正整數]。 現在,因爲.filter如果「返回布爾值」爲false,我會從數組中刪除一個元素,我不知道如何循環遍歷所有元素,因爲循環將取消它看到「返回」。 –