У меня есть маппер, и я изменяю плоские данные на данные дерева с моим маппером. js, и это работает. у каждого элемента в моих данных есть parentId, и я проверяю parentId по их идентификатору и делаю его в виде данных дерева. и я изменяю свои плоские данные на данные дерева с моим parentId. но у меня есть проблема с этим, и моя проблема в том, что мои данные дерева только для шага буксировки и не глубже 3 шага
вот мои плоские данные
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)
я использую из мой маппер и измени его на дерево здесь мой маппер
маппер. 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) };
}
});
}
его работа, и я делаю с ним данные дерева, но я делаю не получить grandChild 1. Я имею в виду, что он не go глубже, чем шаг буксировки.
вот мой журнал из 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": []
}
]
}
]
}
]