对象的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 }],
...
])
如果对象不包含任何东西,但id
和title
,地图可以简化为:
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/
回答:
你可以使用reduce
与esmascript 6
map
然后值传递给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