2014-04-23 4 views
11

У меня есть массив:NodeJS: Как удалить дубликаты из массива

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

Теперь я хочу, чтобы удалить все дубликаты из него. Есть ли какой-нибудь метод в NodeJs, который может это сделать напрямую.

+0

Это может быть быстрее, чем другие подходы – Davet

+1

myArray.filter (функция (пункт, индекс, обр) {вернуться arr.indexOf (пункт) === индекс}), пожалуйста, игнорировать мой предыдущий комментарий, читать ваш вопрос неправильно , – Davet

ответ

14

Нет встроенного метода для получения уникальных методов массива, но вы можете посмотреть библиотеку под названием lodash, которая имеет такие отличные методы: _.uniq(array).

Кроме того, предложите альтернативный метод, так как Node.js теперь поддерживает Set. Вместо использования стороннего модуля используйте встроенную альтернативу.

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

Должно ли быть ['_.uniq'] (https://lodash.com/docs#uniq) вместо' _.unique'? – pshirishreddy

+0

Правда, метод называется '_.uniq', фиксированным. –

35

Нет, встроенный метод в node.js отсутствует, однако есть много способов сделать это в javascript. Все, что вам нужно сделать, это look around, так как на это уже был дан ответ.

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

Спасибо, Михай и Юрка. Мне просто интересно, есть ли какой-либо встроенный метод для этого. В любом случае вы, ребята, решили мою проблему. С наилучшими пожеланиями –

+0

merci boss (+1) –

+0

@YoYoSatySingh Лучше пройти через 'Set' в Node.js сейчас. Поддержка браузера также начинает поступать туда. –

Смежные вопросы