【问题标题】:Merge JSON Object with same “key” and add their corresponding “value” using JavaScript [closed]合并具有相同“键”的 JSON 对象并使用 JavaScript 添加相应的“值”[关闭]
【发布时间】:2019-07-27 17:56:40
【问题描述】:

我有以下要合并的 JSON 对象:

{
  "Results": [
    {
      "Name": "NAME1",
      "Events": {
        "EVENTTYPE": "Upgrade",
        "STARTDATE": "2019-03-05",
        "ENDDATE": "2019-03-19",
        "EVENT_DESC": "Upgrade to A"
      }
    },        
    {
      "Name": "NAME3",
      "Events": {
        "EVENTTYPE": "Upgrade",
        "STARTDATE": "2019-05-08",
        "ENDDATE": "2019-05-29",
        "EVENT_DESC": "Upgrade to A1"
      }
    },
    {
      "Name": "NAME3",
      "Events": {
        "EVENTTYPE": "Upgrade",
        "STARTDATE": "2019-03-06",
        "ENDDATE": "2019-03-13",
        "EVENT_DESC": "Upgrade to A2"
      }
    }
  ]
}

我想合并这样的东西:

{
  "Results": [
    {
      "Name": "NAME1",
      "Events": {
        "EVENTTYPE": "Upgrade",
        "STARTDATE": "2019-03-05",
        "ENDDATE": "2019-03-19",
        "EVENT_DESC": "Upgrade to A"
      }
    },
    {
      "Name": "NAME3",
      "Events": [
        {
          "EVENTTYPE": "Upgrade",
          "STARTDATE": "2019-05-08",
          "ENDDATE": "2019-05-29",
          "EVENT_DESC": "Upgrade to A1"
        },
        {
          "EVENTTYPE": "Upgrade",
          "STARTDATE": "2019-03-06",
          "ENDDATE": "2019-03-13",
          "EVENT_DESC": "Upgrade to A2"
        }
      ]
    }
  ]
}

Key是“Name”,在“Name3”下可以看到重复的key,如何在JavaScript中合并重复的key并添加对应的值?

【问题讨论】:

    标签: javascript json merge key


    【解决方案1】:

    你可以试试Array#reduce

    var obj = { "Results": [ { "Name": "NAME1", "Events": { "EVENTTYPE": "Upgrade", "STARTDATE": "2019-03-05", "ENDDATE": "2019-03-19", "EVENT_DESC": "Upgrade to A" } },{ "Name": "NAME3", "Events": { "EVENTTYPE": "Upgrade", "STARTDATE": "2019-05-08", "ENDDATE": "2019-05-29", "EVENT_DESC": "Upgrade to A1" } }, { "Name": "NAME3", "Events": { "EVENTTYPE": "Upgrade", "STARTDATE": "2019-03-06", "ENDDATE": "2019-03-13", "EVENT_DESC": "Upgrade to A2" } } ] };
    
    Object.keys(obj).forEach(k=>{
          obj[k] = obj[k].reduce((a,b)=>{
              var ind = a.map(i=>i.Name).indexOf(b.Name)
              if(ind > -1){
                a[ind]['Events'].push(b['Events'])
              }else{
               ar=[];
               ar.push(b['Events'])
               b['Events'] = ar;
               a.push(b)
              }
             return a;
          },[])
    });
    console.log(obj);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-16
      • 2022-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多