Я использую машинопись (для углового проекта), и у меня есть такой класс:
class Encyc {
constructor(id: number, parentId: number) {
this.id = id;
this.parentId = parentId;
}
// these fields come from server side
private _id: number;
private _parentId: number;
// extra variable
private _hasChildren: boolean;
private _children: Encyc[];
// getters and setters
}
представьте, что я получаю такой список с сервера:
[
Encyc(1, null),
Encyc(2, null),
Encyc(3, 1),
Encyc(4, 1),
Encyc(5, 3),
Encyc(6, 2),
Encyc(7, 4),
Encyc(8, null),
Encyc(9, 2),
Encyc(10, 5)
]
теперь мне нужен метод, чтобы получить эти данные, установить дочерние элементы каждого родителя и вернуть список следующим образом:
[
Encyc(1, null, true, [
Encyc(3, 1, true, [
Encyc(5, 3, true, [
Encyc(10, 5, false, [])
])
]),
Encyc(4, 1, true, children[
Encyc(7, 4, false, [])
])
]),
Encyc(2, null, true, [
Encyc(6, 2, false, []),
Encyc(9, 2, false, [])
]),
Encyc(8, null, false, [])
]
сначала я получил список из 10 элементов, затем (посленужная мне функция) список будет содержать всего 3 элемента.первый имеет 2 прямых дочерних элемента, и число его дочерних элементов равно 5
, есть ли какая-нибудь библиотека или алгоритмы для чего-то подобного?