2016-11-29 12 views
8

Mam tablicę:Jak zdobyć unikatową tablicę tylko filtr w JavaScript

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

chcę uzyskać wyjątkową tablicę z danej tablicy jak

b = [2,3,4,5] 

Próbowałem

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

i nie chcę używać pętli.

+5

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

+0

Oto kilka przykładów - http: //www.jstips. co/en/deduplicate-tablica/z nowszą składnią ES i przyszłymi implementacjami (używając zestawów Array) – ioneyed

+0

użyj biblioteki lodash (https://lodash.com/docs/#uniq) – Pratap

Odpowiedz

11

Można po prostu zrobić to w JavaScript, z pomocą drugiej - index - parametr metody filter:

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

Będę szczęśliwy, jeśli wyjaśnisz to "function (d, i) {return a.indexOf (d) == i}" –

+2

i w parametrze służy do indeksowania, oznacza, że ​​gdy sprawdzasz drugą piątkę, indeks będzie 4, ale indexOf będzie 3, więc nie pasują stąd też odfiltrowuje się – Ash

+0

Dzięki. Masz gi ven, prosta, podchwytliwa i świetna odpowiedź na ten problem. –

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

Proszę podać wyjaśnienie do kodu –

+0

Proszę zapoznać się z Yaser Adel Mehraban sloution –

2

nie jest to związane kątowa problem. Można go rozwiązać na kilka sposobów w zależności od używanych bibliotek.

Jeśli używasz jQuery:

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

Wyjście będzie:

[2,3,4,5] 

Jeśli używasz podkreślenia:

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

samej mocy.

i czystego kodu JS:

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