I need to get the root element for each node.
I have two functions below.
When I ran getRoot I got undefined.
I think the problem is in the recursion function.
ex: for node id=3, I need {id: 1, name: "Business1"}.
//to get the parent for any node
function getParent(id) {
const node = this._items.find(
item => item.parent !== undefined && item.id == id
);
return node.parent;
}
//to get the root for the node
function getRoot(parent) {
console.log(this._items);
this._items.forEach(element => {
if (element.id == parent) {
if (element.parent === undefined) return element;
else return this.getRoot(element.parent);
}
});
}
//constant array
const array = [
{id: 1, name: "Business1"},
{id: 2, name: "Canton1", parent: 1},
{id: 3, name: "Branch1", parent: 2},
{id: 4, name: "Branch2", parent: 2},
{id: 5, name: "Canton2", parent: 1},
{id: 6, name: "Branch1", parent: 5},
{id: 7, name: "Branch2", parent: 5},
{id: 8, name: "Canton3", parent: 1},
{id: 9, name: "Branch1", parent: 8},
{id: 10, name: "Branch2", parent: 8},
{id: 9, name: "Business2"},
{id: 10, name: "Canton1", parent: 9},
{id: 11, name: "Branch1", parent: 10},
{id: 12, name: "Branch2", parent: 10},
{id: 13, name: "Canton2", parent: 9},
{id: 14, name: "Branch1", parent: 13},
{id: 15, name: "Branch2", parent: 13},
{id: 16, name: "Canton3", parent: 9},
{id: 17, name: "Branch1", parent: 16},
{id: 18, name: "Branch2", parent: 16},
];