[英]Concatenating child array to parent
现在我有一个对象数组,孩子们也有一个对象数组。
[
{
"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);
这没有给我想要的结果,因为它向父对象添加了另一个数组,但这就是我所处的位置。
const newArray = originalArray.flatMap(element => [element, ...element.children])
这应该这样做,并且作为奖励将保留顺序(父母1,父母1的孩子,父母2,父母2的孩子等)
当然,如果您只有一层嵌套,这会起作用。 如果您有更大的深度级别,那会更复杂一些,可能使用 Array.prototype.reduce()。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.