我有一個看起來像這樣的陣列:

所以作為一個結構,它會是這樣的:
[
[
{ classNumber: '2', status: 'A', terms: [] },
{ classNumber: '32', status: 'B', terms: [] },
{ classNumber: '44', status: 'C', terms: [] }
],
[
{ classNumber: '2', status: 'B', terms: [] },
{ classNumber: '31', status: 'A', terms: [] }
],
....
]
之所以會出現這種奇怪的物件陣列,是因為在某些時候,在我們的應用程式中,我們正在創建一系列理由來使用同一個物件來反對某些東西。
我需要能夠合并物件的嵌套陣列,如下所示:
[
{ classNumber: '2', status: [ 'A', 'B' ], terms: [] },
{ classNumber: '31', status: [ 'A' ], terms: [] },
{ classNumber: '32', status: [ 'B' ], terms: [] },
{ classNumber: '44', status: [ 'C' ], terms: [] }
]
但是我已經為此苦苦掙扎了幾天,尋找一些lodash功能但仍然沒有運氣......
我完全不知道如何實作這一目標。所有示例看起來都更簡單,嵌套陣列更少。關于如何合并同一物件鍵的所有道具的任何想法?
提前非常感謝。
uj5u.com熱心網友回復:
如果我沒有遺漏什么,你正在尋找這個:?
var merged = Array.prototype.concat.apply([], original);
像:
Array.prototype.concat.apply([], [[1,2,3],[4,5], [6]]);
// returns:
// [1, 2, 3, 4, 5, 6]
其他方式:
var merged = [];
for(var i = 0; i<original.length; i ) {
for(var j = 0, arr = original[i]; j<arr.length; j ) {
merged.push(arr[j]);
}
}
uj5u.com熱心網友回復:
我做得很快,但這樣的事情應該可以完成
_.chain(doubleNestedArray)
.flatten()
.groupBy(element => element.classNumber)
.map((value) => ({
...value[0],
status: value.map(element => element.status)
}))
.value()
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/471372.html
標籤:javascript 数组 罗达什
