【问题标题】:how to merge two array objects in javascript如何在javascript中合并两个数组对象
【发布时间】:2017-03-30 14:45:06
【问题描述】:

只是想知道将这两个数组合并在一起的最佳方法是什么。

例子

var a = [{"ID":11021,"ASSET_NAME":"panda","SERVICE_NAME":"Open Ticket"}]
var b = [{"ID":11021,"ASSET_NAME":"panda","SERVICE_NAME":"open requests"}]

希望将它们合并到:

var c = ["ID":11021, ASSET_NAME:"panda", service_name: ['open requests','open tickets']]

任何帮助都会很棒。

谢谢

【问题讨论】:

标签: javascript arrays array-merge


【解决方案1】:

您可以使用一个对象来存储 ID 和 reduce() 来创建新的合并对象数组。

var a = [{"ID":11021,"ASSET_NAME":"panda","SERVICE_NAME":"Open Ticket"}]
var b = [{"ID":11021,"ASSET_NAME":"panda","SERVICE_NAME":"open requests"}]
var obj = {}

var result = a.concat(b).reduce(function(r, e) {
  if (!obj[e.ID]) {
    obj[e.ID] = {
      ID: e.ID,
      ASSET_NAME: e.ASSET_NAME,
      service_name: []
    }
    r.push(obj[e.ID])
  }
  obj[e.ID].service_name.push(e.SERVICE_NAME)
  return r
}, [])

console.log(JSON.stringify(result, 0, 4))

【讨论】:

    【解决方案2】:

    您可以使用数组的 ma​​p 方法,如下所示:

    var a = [{'eprid':112}, {'asset_name':'panda'}, {'service_name': 'open tickets'}];
    var b = [{'eprid':112}, {'asset_name':'panda'}, {'service_name': 'open requests'}];
    var c = a.map((obj, i) => {
        for (key in obj) {
        if(obj[key] !== b[i][key]) {
            obj[key] = [obj[key], b[i][key]]
        }
        return obj;
      }
    })
    
    console.log(c) // [{'eprid':112}, {'asset_name':'panda'}, {'service_name': ['open ticket', 'open requests']}]
    

    【讨论】:

      猜你喜欢
      • 2019-09-26
      • 2013-01-17
      • 2019-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      相关资源
      最近更新 更多