组织具有树结构的数据列表中的节点

时间:2018-05-27 01:11:24

标签: javascript typescript tree

我使用的是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个

是否有类似这样的库或算法?

0 个答案:

没有答案