合并具有独立ID的两个对象数组,以使对象不会重复

时间:2018-08-10 00:41:22

标签: javascript

我有两个对象数组,每个对象都有.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}]`

1 个答案:

答案 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中的所有重复键。