我有两个对象数组,每个对象都有.id属性。我需要合并它们,以便在返回数组中,每个对象id都是唯一的(当尝试加入该数组时,对象whos .id已存在于该数组的其他对象中)。最好是es6方式。谢谢!
var a = [{id: 2}, {id:3}]
var b = [{id: 4}, { id:3}]
mergeArrays(a,b)
// should return
////[{id: 2}, {id:3}, {id: 4}]`
答案 0 :(得分:2)
这是一种方法:将两个数组连接为一个数组,并通过id将其简化为一个对象,该对象将删除重复项。用Object.values()
抓取值数组可产生所需的结果:
var a = [{id: 2}, {id:3}]
var b = [{id: 4}, {id:3}]
const result = Object.values(a.concat(b).reduce((a, e) => {
a[e.id] = e;
return a;
}, {}));
console.log(result);
请注意,由于串联的顺序,b
的键将覆盖a
中的所有重复键。