i have a mapper and i change a flat data to a tree data with my mapper.js and it works. every item in my data have a parentId and i check parentId with their id and make it to tree data. and i change my flat data to tree data with my parentId. but i have a problem with it and my problem is that my tree data is just for tow step and its not depper than 3 step
here is my flat data
let data = [
{
"id": "26088812-0d3f-458b-b7e7-8ba79f63c795",
"name": "garand father",
"parentId": ""
},
{
"id": "161fcd9f-2345-4b60-8dd6-4c31c90ba53e",
"name": "father 1",
"parentId": "26088812-0d3f-458b-b7e7-8ba79f63c795"
},
{
"id": "baab7121-b26b-4fee-925d-274b2153b19f",
"name": "child 1",
"parentId": "161fcd9f-2345-4b60-8dd6-4c31c90ba53e"
},
{
"id": "ceb26f26-f96c-49f7-a9f2-0ee61d9ada55",
"name": "grand child 1",
"parentId": "baab7121-b26b-4fee-925d-274b2153b19f"
}
]
let newArray = maper(data, data);
newArray = newArray.filter((x) => !x.parentId);
console.log("newArray",newArray)
i use from my mapper and change it to the tree here is my mapper
mapper.js
export default function maper(data, filterData) {
return data.map((x) => {
let newX = {
...x,
employees: filterData.filter((xfilter) => x.id === xfilter.parentId),
};
if (newX.employees.length === 0) {
return newX;
} else {
return { ...newX, employees: maper(newX.employees, data) };
}
});
}
its work and i make tree data with it but i do not get grandChild 1. i mean its not go deeper than tow step.
here is my log from newArray
[
{
"id": "26088812-0d3f-458b-b7e7-8ba79f63c795",
"name": "garand father",
"parentId": "",
"employees": [
{
"id": "161fcd9f-2345-4b60-8dd6-4c31c90ba53e",
"name": "father 1",
"parentId": "26088812-0d3f-458b-b7e7-8ba79f63c795",
"employees": [
{
"id": "baab7121-b26b-4fee-925d-274b2153b19f",
"name": "child 1",
"parentId": "161fcd9f-2345-4b60-8dd6-4c31c90ba53e",
"employees": []
}
]
}
]
}
]