2016-11-22 88 views
-1

我有一個數組:['Bobby', 'John', 'Sam'],另一個只是['Bobby', 'John']。我想從第一個過濾第二個數組,只留下Sam。我試圖通過filter來實現。在JavaScript中過濾另一個字符串數組中的字符串數組(這不是重複的)

var a = ['Bobby', 'John', 'Sam'], 
 
    b = ['Bobby', 'John']; 
 

 
var res = a.filter(function(v) { 
 
    return b.indexOf(v) == -1; 
 
    // or in latest browser 
 
    // return !b.includes(v); 
 
}) 
 

 
console.log(res);

此操作,因爲Array#filter需要一個回調是謂詞,並過濾基於該回調數組元素:

+1

請不要提出重複的問題,它真的會降低網站。如果你沒有得到答案 - 舉一個賞金或類似的東西來吸引注意力。 – Li357

+0

道歉的人,至少它工作:) – Ryan

+0

哪裏是賞金按鈕?無法真正找到它。 – Ryan

回答

3

使用Array#filter方法與Array#indexOf方法。如果回調函數返回true,則元素將保留,否則將被濾除。每文檔:

callback

功能是謂詞,以測試數組的每個元素。返回true以保留該元素,否則返回false

在上面的代碼片段中,v保存了正在數組中處理的當前值的值。代碼然後通過a數組,返回true或false的基礎上,如果該元素(v)出現在b,Array#indexOf

Array#indexOf由於返回-1,如果元件確實在陣列中不存在,回調檢查是否vb存在。如果沒有,將其過濾掉,從而得到期望的結果。

+2

我添加了一些可能過多的添加。按照您的願望回滾:^) – Li357

相關問題