将JSON对象与相同的“;键”;并添加相应的“;价值”;使用JavaScript

将JSON对象与相同的“;键”;并添加相应的“;价值”;使用JavaScript,javascript,json,merge,key,Javascript,Json,Merge,Key,我有以下要合并的JSON对象: { "Results": [ { "Name": "NAME1", "Events": { "EVENTTYPE": "Upgrade", "STARTDATE": "2019-03-05", "ENDDATE": "2019-03-19", "EVENT_DESC": "Upgrade to A" } }, {

我有以下要合并的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"
        }
      ]
    }
  ]
}

键是“Name”,您可以在“Name3”下看到重复键,如何将重复键与JavaScript合并并添加相应的值?

您可以尝试使用
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”:“Name”:“NAME3”,“Events”:{“事件类型”:“升级”,“开始日期”:“2019-03-06”,“结束日期”:“2019-03-13”,“事件描述”:“升级到A2”}]};
Object.keys(obj.forEach)(k=>{
obj[k]=obj[k]。减少((a,b)=>{
var ind=a.map(i=>i.Name).indexOf(b.Name)
如果(ind>-1){
a[ind]['Events'].推送(b['Events'])
}否则{
ar=[];
ar.push(b['Events'])
b['Events']=ar;
a、 推动(b)
}
返回a;
},[])
});
console.log(obj);