簡體   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