Given the following data set:
const accounts = [
{id: 2, children: [1,22,69], parentId: null},
{id: 3, children: [140, 122, 580], parentId: null},
{id: 1, children: [4,5,6], parentId: 2},
{id: 22, children: [8,9,2], parentId: 2},
{id: 4, children: [45,54,61], parentId: 1},
{id: 6, children: [40,89,20], parentId: 1},
{id: 40, children: [], parentId: 6},
....
]
I need to create a function that takes an id
as argument and returns a tree, starting with the topmost level parent and its children (and siblings).
In the above example, there are only 2 top level "accounts", id:2
and id:3
. So the function call might look like findTree(89)
, it should return the tree starting with the account id 2, and its children, but will obviously leave out account id 3 and its children, since that top level account has nothing to do with top level account of id 2, so the ideal response would be:
{
id: 2,
children: [
{ id: 1, children: [{id: 540, children: [{ id: 78},{}], parentId:1], parentId: 2},
.....
],
parentId: null
}
What would be the best way to go about it? I've tried a recursive function but I'm not getting anywhere near to a solution.