繁体   English   中英

使用Set在对象数组中查找唯一元素不起作用

[英]Find unique element in an array of objects using Set doesn't work

我有一个对象数组,我试图从中获取独特的元素。 我尝试使用Set来获取独特的元素。 它在对象数组的情况下不起作用,但在字符串数组等情况下有效。

如何使用set实现此目的?

let data =[{"name":"tagName2"},{"name":"tagName2"}];
console.log(data);  //[ { name: 'tagName2' }, { name: 'tagName2' } ]
console.log((new Set(data)));  //Set { { name: 'tagName2' }, { name: 'tagName2' } }

您可以先使用唯一对象过滤数组,然后将其传递给Set,如下所示:

let data =[{"name":"tagName2"},{"name":"tagName2"}];

uniqueData=removeDuplicates(data, "name");

console.log((new Set(uniqueData)));  //Set {{ name: 'tagName2' }}

function removeDuplicates(data, param){
    return data.filter(function(item, pos, array){
        return array.map(function(mapItem){ return mapItem[param]; }).indexOf(item[param]) === pos;
    })
}

来自docs

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

正如@Tushar指出的那样,这两个对象是不同的。 Set过滤掉同一对象的过滤器对象。

要使Set工作,你需要传入两个对象来渲染同一个对象。检查这个小提琴。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM