我有一个对象数组,我试图从中获取独特的元素。我尝试使用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' } }
答案 0 :(得分:3)
您可以先使用唯一对象过滤数组,然后将其传递给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;
})
}
答案 1 :(得分:2)