I have an array of object which has multiple sub nodes in it, how to find the parent object from child object 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: [
]
}
]
}
]
}
]
}
]
}
];
if id = a4, the output should be:
[
{
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: [
]
}
]
}
]
}
]
}
]
}
]
if id = b3, output should be:
[
{
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: [
]
}
]
}
]
}
]
}
]
}
]
I've tried:
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);