2017-10-04 304 views
0

最初我有Json数组,它是使用underscoregroupBy函数的数组对象的数组,我已经分组并且每个都被分组但是我又想合并具有相同对象名的所有数组,以下是我想要实现的方式,有人可以帮助我解决这个问题。如何合并具有相同名称的JSON对象

即我有一个JSON阵列相同versionId和现在相同的JSON对象我想合并所有这些都具有相同的JSON对象versionId

有人可以帮助它可以很容易地使用underscoreLodash框架

完成

输入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" 
     } 
    ] 
    } 
] 

输出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" 
     } 
    ] 
    } 
] 
+0

[排序JSON阵列的可能的复制在JavaScript中的财产? ](https://stackoverflow.com/questions/21883584/sort-json-array-by-a-property-in-javascript) –

+0

不,我已经经历过这些问题,这些都没有帮助。在这里我有阵列,我需要通过考虑所有的阵列合并 – Batman

+2

@Batman你发布的输出json和输入json是相同的。 –

回答

1

如果你知道结构将是完全一样,这里是很简单的解决办法:

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) { 
 
    \t result[key] = (key in result? result[key].concat(obj[key]) : obj[key]); 
 
    } 
 
    return result; 
 
} 
 
console.log(a.reduce(filterKeys, {}));

+0

谢谢现在检查!! – Batman

相关问题