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

Posted

技术标签:

【中文标题】NodeJS:如何从数组中删除重复项[重复]【英文标题】:NodeJS: How to remove duplicates from Array [duplicate] 【发布时间】:2014-06-07 21:31: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中是否有任何方法可以直接做到这一点。

【问题讨论】:

这可能比其他方法更快 myArray.filter(function(item , index, arr) return arr.indexOf(item)=== index) 请忽略我之前的评论,看错了你的问题。 【参考方案1】:

不,node.js 中没有内置方法,但是在 javascript 中有很多方法可以做到这一点。您所要做的就是look around,因为这已经得到了回答。

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

【讨论】:

感谢 Mihai 和 Jurka。我只是想知道是否有任何内置方法可以做到这一点。无论如何,你们解决了我的问题。最好的问候 @YoYoSatySingh 现在最好在 Node.js 中通过 Set。浏览器支持也开始实现。 短版:uniques = array.filter((x, i) => i === array.indexOf(x))【参考方案2】:

不,没有内置方法可以从数组唯一方法中获取,但您可以查看名为 lodash 的库,它具有如此出色的方法 _.uniq(array)

另外,提出替代方法,因为 Node.js 现在已经支持 Set。不要使用 3rd 方模块,而是使用内置的替代方案。

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

【讨论】:

不应该是_.uniq 而不是_.unique 吗? 不错,方法叫_.uniq,已修复。

以上是关于NodeJS:如何从数组中删除重复项[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从数组中删除重复的对象

如何从二维数组中删除重复项? [关闭]

如何从 C# 数组中删除重复项?

如何从 Perl 中的数组中删除重复项?

如何从对象数组中删除所有重复项?

Java从数组中删除重复项?