3 回答

TA貢獻1836條經驗 獲得超4個贊
對于動態鍵,創建一個函數,該函數將表示鍵的數組和數組字符串作為輸入。
創建另一個輔助方法來比較兩個對象的給定鍵。
使用filter()對象的數組,然后使用對every()當前索引之前元件不等于關于給定鍵的當前對象。
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貢獻2012條經驗 獲得超12個贊
您可以reduce使用 aMap作為累加器的數組。使用a和b屬性的組合作為鍵,以便刪除重復項。然后使用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)
添加回答
舉報