现在,我有一个对象数组,它的子对象也有一个对象数组。
[
{
"code": "mock-code",
"name": "mock-name",
"children": [
{
"code": "mock-child-code",
"name": "mock-child-name",
},
{
"code": "mock-child-code",
"name": "mock-child-name",
},
],
},
{
"code": "mock-code",
"name": "mock-name",
"children": [],
},
{
"code": "mock-code",
"name": "mock-name",
"children": [
{
"code": "mock-code",
"name": "mock-name",
}
],
}
]我想提取子数组并将它们连接到父数组,如下所示。
[
{
"code": "m1",
"name": "mock-name",
"children": [
{
"code": "mc-1",
"name": "mn-1",
},
{
"code": "mc-2",
"name": "mn-2",
},
],
},
{
"code": "m2",
"name": "mock-name",
"children": [],
},
{
"code": "mm3",
"name": "mock-name",
"children": [
{
"code": "mc-3",
"name": "mn-3",
}
],
}
{
"code": "mc-1",
"name": "mn-1",
},
{
"code": "mc-2",
"name": "mn-2",
},
{
"code": "mc-3",
"name": "mn-3",
}
] 有什么方法可以做到这一点。我现在循环遍历这个子数组,创建一个新的数组,检查它是否为空。这一切看起来有点凌乱。有没有一种干净利落的方法呢?
let fullList = New Array()
parentData.forEach(element => {
if (!!element.children.length) {
fullList.push(element.children);
}
});
return parentData.concat(fullList);这没有给我想要的结果,因为它向父对象添加了另一个数组,但这就是我所处的位置。
发布于 2020-10-13 00:40:32
const newArray = originalArray.flatMap(element => [element, ...element.children])这应该可以做到这一点,作为奖励,它将保留顺序(parent1、Parent1的子代、parent2、Parent2的子代等)。
当然,如果您只有一层嵌套,这是可行的。如果你有更高的深度级别,那就有点复杂了,可能需要使用Array.prototype.reduce()。
https://stackoverflow.com/questions/64321710
复制相似问题