【发布时间】:2021-07-16 07:56:08
【问题描述】:
我有一个对象数组,其中有多个子节点,如何从子对象 id 中找到父对象。
[
{
id: "a1",
name: "apple",
subGroups: [
{
id: "a2",
name: "apple-a",
subGroups: [
{
id: "a3",
name: "apple-b",
subGroups: [
{
id: "a4",
name: "apple-c",
subGroups: [
{
id: "a5",
name: "apple-d",
subGroups: [
]
}
]
}
]
}
]
}
]
},
{
id: "b2",
name: "orange",
subGroups: [
{
id: "b2",
name: "orange-a",
subGroups: [
{
id: "b3",
name: "orange-b",
subGroups: [
{
id: "b4",
name: "orange-c",
subGroups: [
{
id: "b5",
name: "orange-d",
subGroups: [
]
}
]
}
]
}
]
}
]
}
];
如果id = a4,输出应该是:
[
{
id: "a1",
name: "apple",
subGroups: [
{
id: "a2",
name: "apple-a",
subGroups: [
{
id: "a3",
name: "apple-b",
subGroups: [
{
id: "a4",
name: "apple-c",
subGroups: [
{
id: "a5",
name: "apple-d",
subGroups: [
]
}
]
}
]
}
]
}
]
}
]
如果id = b3,输出应该是:
[
{
id: "b2",
name: "orange",
subGroups: [
{
id: "b2",
name: "orange-a",
subGroups: [
{
id: "b3",
name: "orange-b",
subGroups: [
{
id: "b4",
name: "orange-c",
subGroups: [
{
id: "b5",
name: "orange-d",
subGroups: [
]
}
]
}
]
}
]
}
]
}
]
我试过了:
const find = (array, id) => (Array.isArray(array) ?
array : [array]).flatMap(o => o.id=== id? o : find(o.subGroups, id)), data = group, result = find(data, event.id);
【问题讨论】:
标签: javascript arrays flatten flatmap