如何根据条件合并对象的数组属性?

时间:2019-01-17 03:36:04

标签: javascript arrays object ecmascript-6

如何将两个对象合并在一起。并在每次数字匹配时将新对象添加到正文中? 我尝试了传播算子,但它是在覆盖值而不是更改它。

之前:

let obj = {
  number: "123",
  body:[
    {
      id:'client',
      text:'hi'
    }
  ]
}

let obj2 = {
  number: "123",
  body:[
    {
      id:'client',
      text:'Hello there'
    }
  ]
}

我需要将它们合并以具有:

obj = {
  number: "123",
  body:[
    {
      id:'client',
      text:'hi'
    },
    {
      id:'client',
      text:'Hello there'
    }
  ]
}

2 个答案:

答案 0 :(得分:1)

只需检查两种情况下的number键是否相等,然后迭代obj2.body并推动obj.body中的每个项目

let obj = {
  number: "123",
  body: [{
    id: 'client',
    text: 'hi'
  }]
}

let obj2 = {
  number: "123",
  body: [{
    id: 'client',
    text: 'Hello there'
  }]
}

if (obj2.number === obj.number) {
  obj2.body.forEach(item => {
    obj.body.push(item)
  })
}

console.log(obj)

答案 1 :(得分:0)

如果只有两个对象,您可以这样做

if (obj.number == obj2.number) {
   obj.body = obj.body.concat(obj2.body)
   console.log("Here's is your new object", obj);
}