对象的ECMAScript 6(ES6)的集

我有对象数组以这种形式:对象的ECMAScript 6" title="ECMAScript 6">ECMAScript 6(ES6)的集

[ 

{id : #mixed char and num , title : #string },

{id : #mixed char and num , title : #string } ...]

我想来遍历它并删除重复的对象中,我使用设置结构这样做,但问题是,设置运营方将接受复制的对象 我试图

let Unique = new Set([], X => x.id) 

但不会帮助

回答:

由于the reference状态,

设定的对象,您可以存储任何类型的唯一值,无论是原始值或对象引用。

如果这些是不同的对象引用,它们将不会被重复数据删除。如果对象需要通过id唯一密钥进行标识,那么Set是错误的选择。一个地图可以达到这个目的:

new Map([ 

[#mixed char and num, {id : #mixed char and num , title : #string }],

...

])

如果对象不包含任何东西,但idtitle,地图可以简化为:

new Map([ 

[#mixed char and num, #string],

...

])

回答:

您可以删除所有的重复与.filter

let uniqueArr = arr.filter((item, index) => { 

return arr.findIndex(item2 => item2.id === item.id) === index;

});

小提琴demoing概念:https://jsfiddle.net/4oanw972/

回答:

你可以使用reduceesmascript 6map然后值传递给Set构造。然而,你可以在es6

new Set(arr.reduce((map,item)=>map.set(item.id, item), new Map()).values()); 

正常使用Object为好,Object.values因为你知道你正在identifing通过id唯一的,这样只是创建id的关键指向实际的对象,因此,用相同的ID前面的物体它将会覆盖,你将最终得到只有一个对象对每个id,然后只是得到价值和构建你的设置。

以上是 对象的ECMAScript 6(ES6)的集 的全部内容, 来源链接: utcz.com/qa/265736.html

回到顶部