Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Set';在对象数组中查找唯一元素;行不通_Javascript_Arrays_Duplicates_Set - Fatal编程技术网

Javascript 使用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

我有一个对象数组,我试图从中获取唯一的元素。我尝试使用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;
    })
}

Set对象允许您存储任何类型的唯一值,无论 基本值或对象引用

正如@Tushar所指出的,这两个对象是不同的<代码>设置过滤掉引用到同一对象的对象


要使
设置
起作用,您需要传入两个引用同一对象的对象。请查看fiddle。

这是两个不同的对象。对象只有在引用同一位置时才是相等的。没有可以重写的接口来建立等价性-现在只是简单的旧javascript。易于检查:
({name:'tagName2'})==({name:'tagName2'})
产生
false
。定义数组外的对象并按it@azad数据实际上来自该格式的API请求