Javascript 使用Set';在对象数组中查找唯一元素;行不通
我有一个对象数组,我试图从中获取唯一的元素。我尝试使用Set来获得独特的元素。它不适用于对象数组,但适用于字符串数组等 如何使用set实现这一点Javascript 使用Set';在对象数组中查找唯一元素;行不通,javascript,arrays,duplicates,set,Javascript,Arrays,Duplicates,Set,我有一个对象数组,我试图从中获取唯一的元素。我尝试使用Set来获得独特的元素。它不适用于对象数组,但适用于字符串数组等 如何使用set实现这一点 let data =[{"name":"tagName2"},{"name":"tagName2"}]; console.log(data); //[ { name: 'tagName2' }, { name: 'tagName2' } ] console.log((new Set(data))); //Set { { name: 'tagName
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;
})
}
从
Set对象允许您存储任何类型的唯一值,无论
基本值或对象引用
正如@Tushar所指出的,这两个对象是不同的<代码>设置过滤掉引用到同一对象的对象
要使
设置起作用,您需要传入两个引用同一对象的对象。请查看fiddle。这是两个不同的对象。对象只有在引用同一位置时才是相等的。没有可以重写的接口来建立等价性-现在只是简单的旧javascript。易于检查:({name:'tagName2'})==({name:'tagName2'})
产生false
。定义数组外的对象并按it@azad数据实际上来自该格式的API请求