首页 > 解决方案 > 如何将这 2 个对象合并为 1 个?

问题描述

我有 2 个对象:

var set1 = {
    name: "2020-02-17T00:00:00",
    series: [
        { key: "055", value: 1154.47},
        { key: "056", value: 4132.2},
        { key: "059", value: 1825.33}
    ]
}

var set2 = {
    startdate: "2020-02-17T00:00:00",
    series: [
        {key: "005",value: 0},
        {key: "055",value: 0},
        {key: "056",value: 0},
        {key: "059",value: 0},
        {key: "042",value: 0},
        {key: "M002",value: 0}
    ]
}

如何在不覆盖任何值为 0 的键的情况下将 set1 的值推送到 set2 上:

var set2 = {
    startdate: "2020-02-17T00:00:00",
    series: [
        {key: "005", value: 0},
        {key: "055", value: 1154.47},
        {key: "056", value: 4132.2},
        {key: "059", value: 1825.33},
        {key: "042", value: 0},
        {key: "M002", value: 0}
    ]
}

相关代码,可以看这里:https ://jsfiddle.net/xLr8qoes/1/

标签: javascript

解决方案


set2.series = [ ...set2.series, ...set1.series ];

这会将 set2 系列设置为

[
  {
    "key": "005",
    "value": 0
  },
  {
    "key": "055",
    "value": 0
  },
  {
    "key": "056",
    "value": 0
  },
  {
    "key": "059",
    "value": 0
  },
  {
    "key": "042",
    "value": 0
  },
  {
    "key": "M002",
    "value": 0
  },
  {
    "key": "055",
    "value": 1154.47
  },
  {
    "key": "056",
    "value": 4132.2
  },
  {
    "key": "059",
    "value": 1825.33
  },
  {
    "key": "055",
    "value": 1154.47
  },
  {
    "key": "056",
    "value": 4132.2
  },
  {
    "key": "059",
    "value": 1825.33
  }
]

推荐阅读