我使用的是typescript(对于一个角度项目),我有一个这样的类:
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个
是否有类似这样的库或算法?