2016-11-29 56 views
8

我有一個數組:如何獲得只有過濾器獨特的排列在Javascript

var a = [2,3,4,5,5,4] 

我想唯一的數組出給定數組像

b = [2,3,4,5] 

我已經試過

a.filter(function(d){return b.indexOf(d)>-1}) 

我不想使用for循環。

+5

http://stackoverflow.com/questions/9229645/remove-duplicates-from-javascript-array –

+0

這裏有多個實例 - HTTP://www.jstips。 co/en/deduplicate-an-array /使用較新的ES語法,以及將來的實現(使用數組集合) – ioneyed

+0

使用lodash庫(https://lodash.com/docs/#uniq) – Pratap

回答

11

你可以簡單地做它在JavaScript中,與第二的幫助 - 指數 - 該filter方法的參數:

var a = [2,3,4,5,5,4]; 
a.filter(function(value, index){ return a.indexOf(value) == index }); 
+0

如果你解釋這個,我會很高興「函數(d,i){返回a.indexOf(d)== i}」 –

+2

我在參數是索引,意味着當您檢查第二個最後5時,索引將4,但indexOf將3,所以他們不匹配因此它會過濾出 – Ash

+0

謝謝。你有gi ven簡單,棘手和偉大的回答這個問題 –

0
var b = a.filter(function(item, index, inputArray) { 
     return inputArray.indexOf(item) == index; 
}); 
+2

請給你的代碼添加一些解釋 –

+0

請參考Yaser Adel Mehraban sloution –

2

這不是一個角的相關問題。它可以通過幾種方式來解決,具體取決於您使用的庫。

如果您正在使用jQuery:

var uniqeElements = $.unique([2,3,4,5,5,4]); 

輸出將是:

[2,3,4,5] 

如果您正在使用下劃線:

var uniqeElements = _.uniq([2,3,4,5,5,4]); 

相同的輸出。

和純JS代碼:

var unique = [2,3,4,5,5,4].filter(function(elem, index, self) { 
    return index == self.indexOf(elem); 
}) 
相關問題