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)
添加回答
举报