我正在嘗試根據一些嵌套物件過濾陣列。我準備了一些小提琴
輸入陣列如下所示:
let arrayOfElements =
[
{
"name": "a",
"subElements":
[
{"surname": 1},
{"surname": 2}
]
},
{
"name": "b",
"subElements":
[
{"surname": 3},
{"surname": 1}
]
},
{
"name": "c",
"subElements":
[
{"surname": 2},
{"surname": 5}
]
}
];
我期待這個輸出,因為我有類似的管理資料。
let filterArray=
[
{
"name": "a",
"subElements":
[
{"surname": 1}
]
},
{
"name": "a",
"subElements":
[
{"surname": 2},
]
},
{
"name": "b",
"subElements":
[
{"surname": 3}
]
},
{
"name": "b",
"subElements":
[
{"surname": 1}
]
},
{
"name": "c",
"subElements":
[
{"surname": 2}
]
},
{
"name": "c",
"subElements":
[
{"surname": 5}
]
}
];
uj5u.com熱心網友回復:
您可以使用 reduce 輕松做到這一點:
let arrayOfElements =
[
{
"name": "a",
"subElements":
[
{"surname": 1},
{"surname": 2}
]
},
{
"name": "b",
"subElements":
[
{"surname": 3},
{"surname": 1}
]
},
{
"name": "c",
"subElements":
[
{"surname": 2},
{"surname": 5}
]
}
];
const result = arrayOfElements.reduce((acc, el) => {
for(let subElement of el.subElements){ //For each of the subelements
acc.push({ //Create a new element only with its data
name: el.name,
subElements: [subElement]
});
}
return acc;
}, [])
console.log(result)
uj5u.com熱心網友回復:
您正在尋找flatMap:
arrayOfElements.flatMap(elem =>
elem.subElements.map(sub => (
{...elem, subElements: [sub]}
))
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/520687.html
