организовать узлы в списке данных с древовидной структурой - PullRequest
0 голосов
/ 27 мая 2018

Я использую машинопись (для углового проекта), и у меня есть такой класс:

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

, есть ли какая-нибудь библиотека или алгоритмы для чего-то подобного?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...