NodeJS:如何从数组中删除重复项

38
我有一个数组:
[
    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中是否有任何直接执行此操作的方法。


这可能比其他方法更快。 - Davet
1
myArray.filter(function(item, index, arr) { return arr.indexOf(item) === index }) 请忽略我之前的评论,我误读了您的问题。 - Davet
2个回答

77

不,Node.js没有内置的方法来去重,但是在 JavaScript 中有很多方法可以做到这一点。你所需要做的就是四处找找,因为这个问题已经被回答过了。

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

谢谢Mihai和Jurka。我只是想知道是否有任何内置的方法来做这个。不管怎样,你们解决了我的问题。最好的祝福 - Yo Yo Saty Singh
最好现在在Node.js中使用Set。浏览器的支持也开始逐渐完善。 - Juho Vepsäläinen
3
uniques = array.filter((x, i) => i === array.indexOf(x)) - Amin Fazlali

48

没有内置方法可以从数组中获取唯一的元素,但是你可以看看一个叫做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

3
Array.from(new Set(array)),返回仅翻译的文本。 - Ian Carter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接