es6 具有集合的唯一对象数组

新手上路,请多包涵

我遇到了这个用 es6 创建独特数组的例子

[ ...new Set(array) ]

在我尝试使用一组对象并且它没有返回唯一数组之前,这似乎工作正常。

IE

 let item = [ ...new Set([{id:123,value:'test'},{id:123,value:'test'}]) ];

这是为什么 ?

原文由 StevieB 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 273
2 个回答

这是为什么 ?

根据 文档

Set 对象允许您存储任何类型的唯一值,无论是原始值还是 对象引用

现在引用内部的每个数组 Set 构造函数将不同,因此它们不被构造函数视为唯一值。

原文由 gurvinder372 发布,翻译遵循 CC BY-SA 3.0 许可协议

你可以尝试做

uniqueArray = a => [...new Set(a.map(o => JSON.stringify(o)))].map(s => JSON.parse(s))

我知道它非常丑陋,但在大多数情况下,除了在对象参数中有 new Date() 然后在 stringify 上将其转换为 ISO 字符串之外,它还可以工作。

那么就做

let arr = [{id:1},{id:1},{id:2}];
uniqueArray(arr) //[{id:1},{id:2}]

原文由 Vic 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题