简体   繁体   English

如何合并具有相同名称的JSON对象

[英]How to merge JSON Objects having same name

Initially I had Json Array which is array of array objects using underscore groupBy function , I have grouped and each are grouped but again I wanted to merge all the arrays which is having same object name , Below is the way I wanted to implement ,Can someone help me on this. 最初我有Json Array,它是使用underscore groupBy函数的数组对象的数组,我已经进行了分组,每个都进行了分组,但是我又想合并所有具有相同对象名的数组,下面是我想要实现的方式,有人帮助我。

ie I have same JSON objects having same versionId in JSON array and now I wanted to merge all the JSON object which are having same versionId 即我在JSON数组中有具有相同versionId相同JSON对象,现在我想合并所有具有相同versionId的JSON对象

Can someone help it can be done easily using underscore or Lodash frameworks 有人可以使用underscoreLodash框架轻松完成Lodash

Input JSON 输入JSON

[
  {
    "21289": [
      {
        "id": 255463,
        "orderId": 226433,
        "status": 1,
        "executedOn": "25/Sep/17",
        "executedBy": "Person A",
        "executedByDisplay": "Person A",
        "cycleId": 4042,
        "cycleName": "Cycle A",
        "versionId": 21289,
        "versionName": "Version A",
        "issueKey": "A"
      },
      {
        "id": 255433,
        "orderId": 226403,
        "status": 1,
        "executedOn": "25/Sep/17",
        "executedBy": "Person B",
        "executedByDisplay": "Person B",
        "cycleId": 4041,
        "cycleName": "Cycle B",
        "versionId": 21289,
        "versionName": "Version A",
        "issueKey": "B"
      },
      {
        "id": 255432,
        "orderId": 226402,
        "status": 1,
        "executedOn": "25/Sep/17",
        "executedBy": "Person B",
        "executedByDisplay": "Person B",
        "cycleId": 4041,
        "cycleName": "Cycle B",
        "versionId": 21289,
        "versionName": "Version A",
        "issueKey": "C"
      }
    ],
    "21291": [
      {
        "id": 252067,
        "orderId": 223258,
        "status": 1,
        "executedOn": "12/Sep/17",
        "executedBy": "Person C",
        "executedByDisplay": "Person C",
        "cycleId": 3985,
        "cycleName": "Cycle C",
        "versionId": 21291,
        "versionName": "Version B",
        "issueKey": "D"
      },
      {
        "id": 252014,
        "orderId": 223205,
        "status": 1,
        "executedOn": "12/Sep/17",
        "executedBy": "Person C",
        "executedByDisplay": "Person C",
        "cycleId": 3985,
        "cycleName": "Cycle C",
        "versionId": 21291,
        "versionName": "Version B",
        "issueKey": "E"
      },
      {
        "id": 252012,
        "orderId": 223203,
        "status": 1,
        "executedOn": "11/Sep/17",
        "executedBy": "Person D",
        "executedByDisplay": "Person D",
        "cycleId": 3985,
        "cycleName": "Cycle C",
        "versionId": 21291,
        "versionName": "Version B",
        "issueKey": "F"
      }
    ]
  },
  {
    "21291": [
      {
        "id": 251449,
        "orderId": 222640,
        "status": 1,
        "executedOn": "31/Aug/17",
        "executedBy": "Person E",
        "executedByDisplay": "Person E",
        "cycleId": 3978,
        "cycleName": "Cycle D",
        "versionId": 21291,
        "versionName": "Version B",
        "issueKey": "G"
      },
      {
        "id": 251299,
        "orderId": 222490,
        "status": 1,
        "executedOn": "1/Sep/17",
        "executedBy": "Person F",
        "executedByDisplay": "Person F",
        "cycleId": 3977,
        "cycleName": "Cycle E",
        "versionId": 21291,
        "versionName": "Version B",
        "issueKey": "H"
      }
    ],
    "31457": [
      {
        "id": 250969,
        "orderId": 222160,
        "status": 1,
        "executedOn": "29/Aug/17",
        "executedBy": "Person G",
        "executedByDisplay": "Person G",
        "cycleId": 3973,
        "cycleName": "Cycle F",
        "versionId": 31457,
        "versionName": "Version C",
        "issueKey": "I"
      },
      {
        "id": 250871,
        "orderId": 222062,
        "status": 1,
        "executedOn": "31/Aug/17",
        "executedBy": "Person D",
        "executedByDisplay": "Person D",
        "cycleId": 3973,
        "cycleName": "Cycle F",
        "versionId": 31457,
        "versionName": "Version C",
        "issueKey": "J"
      },
      {
        "id": 250869,
        "orderId": 222060,
        "status": 1,
        "executedOn": "4/Sep/17",
        "executedBy": "Person H",
        "executedByDisplay": "Person H",
        "cycleId": 3973,
        "cycleName": "Cycle F",
        "versionId": 31457,
        "versionName": "Version C",
        "issueKey": "K"
      }
    ]
  }
]

Output JSON as I wanted 根据需要输出JSON

[
  {
    "21289": [
      {
        "id": 255463,
        "orderId": 226433,
        "status": 1,
        "executedOn": "25/Sep/17",
        "executedBy": "Person A",
        "executedByDisplay": "Person A",
        "cycleId": 4042,
        "cycleName": "Cycle A",
        "versionId": 21289,
        "versionName": "Version A",
        "issueKey": "A"
      },
      {
        "id": 255433,
        "orderId": 226403,
        "status": 1,
        "executedOn": "25/Sep/17",
        "executedBy": "Person B",
        "executedByDisplay": "Person B",
        "cycleId": 4041,
        "cycleName": "Cycle B",
        "versionId": 21289,
        "versionName": "Version A",
        "issueKey": "B"
      },
      {
        "id": 255432,
        "orderId": 226402,
        "status": 1,
        "executedOn": "25/Sep/17",
        "executedBy": "Person B",
        "executedByDisplay": "Person B",
        "cycleId": 4041,
        "cycleName": "Cycle B",
        "versionId": 21289,
        "versionName": "Version A",
        "issueKey": "C"
      }
    ],
    "21291": [
      {
        "id": 252067,
        "orderId": 223258,
        "status": 1,
        "executedOn": "12/Sep/17",
        "executedBy": "Person C",
        "executedByDisplay": "Person C",
        "cycleId": 3985,
        "cycleName": "Cycle C",
        "versionId": 21291,
        "versionName": "Version B",
        "issueKey": "D"
      },
      {
        "id": 252014,
        "orderId": 223205,
        "status": 1,
        "executedOn": "12/Sep/17",
        "executedBy": "Person C",
        "executedByDisplay": "Person C",
        "cycleId": 3985,
        "cycleName": "Cycle C",
        "versionId": 21291,
        "versionName": "Version B",
        "issueKey": "E"
      },
      {
        "id": 252012,
        "orderId": 223203,
        "status": 1,
        "executedOn": "11/Sep/17",
        "executedBy": "Person D",
        "executedByDisplay": "Person D",
        "cycleId": 3985,
        "cycleName": "Cycle C",
        "versionId": 21291,
        "versionName": "Version B",
        "issueKey": "F"
      },
      {
        "id": 251449,
        "orderId": 222640,
        "status": 1,
        "executedOn": "31/Aug/17",
        "executedBy": "Person E",
        "executedByDisplay": "Person E",
        "cycleId": 3978,
        "cycleName": "Cycle D",
        "versionId": 21291,
        "versionName": "Version B",
        "issueKey": "G"
      },
      {
        "id": 251299,
        "orderId": 222490,
        "status": 1,
        "executedOn": "1/Sep/17",
        "executedBy": "Person F",
        "executedByDisplay": "Person F",
        "cycleId": 3977,
        "cycleName": "Cycle E",
        "versionId": 21291,
        "versionName": "Version B",
        "issueKey": "H"
      }
    ],
    "31457": [
      {
        "id": 250969,
        "orderId": 222160,
        "status": 1,
        "executedOn": "29/Aug/17",
        "executedBy": "Person G",
        "executedByDisplay": "Person G",
        "cycleId": 3973,
        "cycleName": "Cycle F",
        "versionId": 31457,
        "versionName": "Version C",
        "issueKey": "I"
      },
      {
        "id": 250871,
        "orderId": 222062,
        "status": 1,
        "executedOn": "31/Aug/17",
        "executedBy": "Person D",
        "executedByDisplay": "Person D",
        "cycleId": 3973,
        "cycleName": "Cycle F",
        "versionId": 31457,
        "versionName": "Version C",
        "issueKey": "J"
      },
      {
        "id": 250869,
        "orderId": 222060,
        "status": 1,
        "executedOn": "4/Sep/17",
        "executedBy": "Person H",
        "executedByDisplay": "Person H",
        "cycleId": 3973,
        "cycleName": "Cycle F",
        "versionId": 31457,
        "versionName": "Version C",
        "issueKey": "K"
      }
    ]
  }
]

If you know that structure will be exactly like this, here is quite simple solution: 如果您知道结构将完全像这样,这是一个非常简单的解决方案:

 var a = [ { "21289": [ { "id": 255463, "orderId": 226433, "status": 1, "executedOn": "25/Sep/17", "executedBy": "Person A", "executedByDisplay": "Person A", "cycleId": 4042, "cycleName": "Cycle A", "versionId": 21289, "versionName": "Version A", "issueKey": "A" }, { "id": 255433, "orderId": 226403, "status": 1, "executedOn": "25/Sep/17", "executedBy": "Person B", "executedByDisplay": "Person B", "cycleId": 4041, "cycleName": "Cycle B", "versionId": 21289, "versionName": "Version A", "issueKey": "B" }, { "id": 255432, "orderId": 226402, "status": 1, "executedOn": "25/Sep/17", "executedBy": "Person B", "executedByDisplay": "Person B", "cycleId": 4041, "cycleName": "Cycle B", "versionId": 21289, "versionName": "Version A", "issueKey": "C" } ], "21291": [ { "id": 252067, "orderId": 223258, "status": 1, "executedOn": "12/Sep/17", "executedBy": "Person C", "executedByDisplay": "Person C", "cycleId": 3985, "cycleName": "Cycle C", "versionId": 21291, "versionName": "Version B", "issueKey": "D" }, { "id": 252014, "orderId": 223205, "status": 1, "executedOn": "12/Sep/17", "executedBy": "Person C", "executedByDisplay": "Person C", "cycleId": 3985, "cycleName": "Cycle C", "versionId": 21291, "versionName": "Version B", "issueKey": "E" }, { "id": 252012, "orderId": 223203, "status": 1, "executedOn": "11/Sep/17", "executedBy": "Person D", "executedByDisplay": "Person D", "cycleId": 3985, "cycleName": "Cycle C", "versionId": 21291, "versionName": "Version B", "issueKey": "F" } ] }, { "21291": [ { "id": 251449, "orderId": 222640, "status": 1, "executedOn": "31/Aug/17", "executedBy": "Person E", "executedByDisplay": "Person E", "cycleId": 3978, "cycleName": "Cycle D", "versionId": 21291, "versionName": "Version B", "issueKey": "G" }, { "id": 251299, "orderId": 222490, "status": 1, "executedOn": "1/Sep/17", "executedBy": "Person F", "executedByDisplay": "Person F", "cycleId": 3977, "cycleName": "Cycle E", "versionId": 21291, "versionName": "Version B", "issueKey": "H" } ], "31457": [ { "id": 250969, "orderId": 222160, "status": 1, "executedOn": "29/Aug/17", "executedBy": "Person G", "executedByDisplay": "Person G", "cycleId": 3973, "cycleName": "Cycle F", "versionId": 31457, "versionName": "Version C", "issueKey": "I" }, { "id": 250871, "orderId": 222062, "status": 1, "executedOn": "31/Aug/17", "executedBy": "Person D", "executedByDisplay": "Person D", "cycleId": 3973, "cycleName": "Cycle F", "versionId": 31457, "versionName": "Version C", "issueKey": "J" }, { "id": 250869, "orderId": 222060, "status": 1, "executedOn": "4/Sep/17", "executedBy": "Person H", "executedByDisplay": "Person H", "cycleId": 3973, "cycleName": "Cycle F", "versionId": 31457, "versionName": "Version C", "issueKey": "K" } ] } ]; function filterKeys(result, obj) { for (var key in obj) { result[key] = (key in result? result[key].concat(obj[key]) : obj[key]); } return result; } console.log(a.reduce(filterKeys, {})); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM