es6合并两个对象数组并覆盖现有对象

Ash*_*csi 8 javascript arrays merge ecmascript-6

我有2个对象数组:

const arr1 = [{'id':'1' 'value':'yes'}, {'id':'2', 'value':'no'}];
const arr2 = [{'id':'2', 'value':'yes'}];
Run Code Online (Sandbox Code Playgroud)

因此,如果我尝试合并这两个数组,则结果应为:

arrTemp = [{'id':'1', 'value':'yes'}, {'id':'2', 'value':'yes'}];
Run Code Online (Sandbox Code Playgroud)

基本上,它应该类似于Object.assign()一样工作,但是无论我尝试什么都行不通。有人可以帮我吗?

我修改了数据结构。是否有可能现在合并它们并获得输出。

谢谢

Mad*_*eep 5

这就是如何使用 ES6 扩展、缩减和 Object.values 来完成工作。

const arr1 = [{
  'id': '1',
  'value': 'yes'
}, {
  'id': '2',
  'value': 'no'
}];
const arr2 = [{
  'id': '2',
  'value': 'yes'
}];

const result = Object.values([...arr1, ...arr2].reduce((result, {
  id,
  ...rest
}) => {
  result[id] = {
    ...(result[id] || {}),
    id,
    ...rest
  };
  return result;
}, {}));

console.log(result);
Run Code Online (Sandbox Code Playgroud)


Jon*_*lms 3

const result = Object.entries(Object.assign({}, ...arr1,...arr2)).map(([key, value]) => ({[key]:value}));
Run Code Online (Sandbox Code Playgroud)

您可以将...数组展开 () 到一个结果对象 (via Object.assign) 中,然后将map其条目再次放入数组中。