【问题标题】:NodeJS: How to remove duplicates from Array [duplicate]NodeJS:如何从数组中删除重复项[重复]
【发布时间】: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}) 请忽略我之前的评论,看错了你的问题。

标签: arrays node.js duplicates


【解决方案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,已修复。
猜你喜欢
  • 2017-06-21
  • 2012-10-04
  • 2011-06-29
  • 2015-09-22
  • 2022-12-05
  • 2013-08-03
  • 2022-01-03
相关资源
最近更新 更多