2014-04-23 22 views
11

Mam tablicę:NodeJS: Jak usunąć duplikaty z tablicy

[ 
    1029, 
    1008, 
    1040, 
    1019, 
    1030, 
    1009, 
    1041, 
    1020, 
    1031, 
    1010, 
    1042, 
    1021, 
    1030, 
    1008, 
    1045, 
    1019, 
    1032, 
    1009, 
    1049, 
    1022, 
    1031, 
    1010, 
    1042, 
    1021, 
] 

teraz chcę usunąć wszystkie duplikaty z niego. Czy istnieje metoda w NodeJs, która może to bezpośrednio zrobić.

+0

To może być szybsze niż inne podejścia – Davet

+1

myArray.filter (function (element, indeks, arr) {return arr.indexOf (pozycja) === index}) zignoruj ​​mój poprzedni komentarz, przeczytaj swoje pytanie nieprawidłowo . – Davet

Odpowiedz

14

Nie ma wbudowanej metody uzyskiwania z unikalnych metod tablicowych, ale można spojrzeć na bibliotekę o nazwie lodash, która ma tak wspaniałe metody _.uniq(array).

Ponadto proponuj alternatywną metodę, ponieważ Node.js obsługuje teraz funkcję Set. Zamiast używać modułu zewnętrznego, użyj wbudowanej alternatywy.

var array = [ 
    1029, 
    1008, 
    1040, 
    1019, 
    1030, 
    1009, 
    1041, 
    1020, 
    1031, 
    1010, 
    1042, 
    1021, 
    1030, 
    1008, 
    1045, 
    1019, 
    1032, 
    1009, 
    1049, 
    1022, 
    1031, 
    1010, 
    1042, 
    1021, 
]; 

var uSet = new Set(array); 
console.log([...uSet]); // Back to array 
+1

Czy nie powinno to być ['_.uniq'] (https://lodash.com/docs#uniq) zamiast" _.unique "? – pshirishreddy

+0

Prawda, metoda nazywa się '_.uniq', naprawiona. –

35

Nie, w węźle node.js nie ma wbudowanej metody, jednak w javascript istnieje wiele sposobów na to. Wszystko, co musisz zrobić, to look around, ponieważ zostało już udzielone.

uniqueArray = myArray.filter(function(elem, pos) { 
    return myArray.indexOf(elem) == pos; 
}) 
+0

Dzięki Mihai i Jurka. Właśnie zastanawiałem się czy jest jakaś wbudowana metoda by zrobić to. W każdym razie rozwiązaliście mój problem. Pozdrawiam –

+0

merci boss (+1) –

+0

@YoYoSatySingh Lepiej jest przejść przez 'Set' w Node.js teraz. Obsługa przeglądarek również zaczyna się do tego docierać. –