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

标签 javascript arrays merge ecmascript-6

我有 2 个对象数组:

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

所以,如果我尝试合并这两个数组,结果应该是:

arrTemp = [{'id':'1', 'value':'yes'}, {'id':'2', 'value':'yes'}];

基本上,它的工作方式应该与 Object.assign() 类似,但无论我如何尝试,它都不起作用。谁能帮我解决这个问题?

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

谢谢

最佳答案

这就是使用 ES6 spread、reduce 和 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);

关于javascript - es6 合并两个对象数组并覆盖现有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47554688/

相关文章:

javascript - 无法从 JS 变量设置 HTML 字段?

javascript - 递归地将所有数组转换为多维Javascript对象中的对象

python - 如何让 Python 将数组插入到 *.c 文件中?

python - 使用链接的 "join"连接多个数据帧(而不是合并或连接)是否有效?

git - merge git 中没有真正共同祖先的复制存储库的更改

javascript - 当事件步骤更改时,将 StepContent 数据保留在 Material-ui Stepper 中

javascript - 为什么 javascript 协议(protocol)会自动解码 URL?

javascript - 使用自动完成功能过滤对象内的数组

Git "manual merge"策略

javascript - Opera 和 Firefox 给了我不同的上下文