3 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊
對(duì)于動(dòng)態(tài)鍵,創(chuàng)建一個(gè)函數(shù),該函數(shù)將表示鍵的數(shù)組和數(shù)組字符串作為輸入。
創(chuàng)建另一個(gè)輔助方法來(lái)比較兩個(gè)對(duì)象的給定鍵。
使用filter()對(duì)象的數(shù)組,然后使用對(duì)every()當(dāng)前索引之前元件不等于關(guān)于給定鍵的當(dāng)前對(duì)象。
let arr = [{a:1,b:2,c:4}, {a:3,b:4,c:7}, {a:7,b:10,c:10}, {a:1, b:2,c:4}];
function comp(obj1,obj2,keys){
return keys.every(k => obj1[k] === obj2[k]);
}
function getUnique(arr,keys){
return arr.filter((x,i) => arr.slice(0,i).every(a => !comp(a,x,keys)))
}
console.log(getUnique(arr,['a','b']))

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
您可以reduce使用 aMap作為累加器的數(shù)組。使用a和b屬性的組合作為鍵,以便刪除重復(fù)項(xiàng)。然后使用Map#values獲取輸出
const input = [{a:1,b:2,c:4}, {a:3,b:4,c:7}, {a:7,b:10,c:10}, {a:1, b:2,c:4}],
mapped = input.reduce((map, o) => map.set(o.a + "_" + o.b, o), new Map),
output = Array.from(mapped.values());
console.log(output)
添加回答
舉報(bào)