【问题标题】:Merge two objects in javascript having an array [duplicate]合并具有数组的javascript中的两个对象[重复]
【发布时间】:2020-10-08 11:54:48
【问题描述】:

我有两个对象 a 和 b。每个都有一个数组 results [] ,其中还包含多个对象。

我想将两个对象中的 results [] 数组合并到第三个对象 c 中。

我尝试了var c = Object.assign(a,b),但没有得到结果。

请参考以下示例。

a = {results[{"boys": 50, "girls": 20, "red":10},{boys": 40, "girls": 10, "red":50},{boys": 30, "girls": 10, "red":50}]}

b = {results[{boys": 20, "girls": 30},{boys": 50, "girls": 20},{boys": 70, "girls": 30}]}

我正在寻找如下结果

c = {results[{"boys": 50, "girls": 20, "red":10},{boys": 40, "girls": 10, "red":50},{boys": 30, "girls": 10, "red":50},{boys": 20, "girls": 30},{boys": 50, "girls": 20},{boys": 70, "girls": 30}]}

请帮忙。提前致谢

【问题讨论】:

标签: javascript arrays object concat


【解决方案1】:

在合并两个数组之前,您需要担心的第一件事是确保您的语法正确。

  1. 您的 JavaScript 对象不正确。您需要一个冒号 (:) 跟随您的 "results" 键。
  2. 您缺少 "boys" 键的开头引号。

一旦您解决了这些问题,合并就像使用扩展语法在您的 c 对象中创建一个新的 "results" 数组一样简单。

不幸的是,ES6 中不存在深度合并,因此以下方法不起作用:

const c = { ...a, ...b }

相反,您需要合并对象的"results"

const a = {
  "results": [
    { "boys": 50, "girls": 20, "red": 10 },
    { "boys": 40, "girls": 10, "red": 50 },
    { "boys": 30, "girls": 10, "red": 50 }
  ]
}

const b = {
  "results": [
    { "boys": 20, "girls": 30 },
    { "boys": 50, "girls": 20 },
    { "boys": 70, "girls": 30 }
  ]
}

const c = { "results": [ ...a.results, ...b.results ] }

console.log(c);
.as-console-wrapper { top: 0; max-height: 100% !important; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    相关资源
    最近更新 更多