Перемещение вверх и вниз по многомерному массиву в Angular 2 / TypeScript

[
  {id: 1,
  name: "test 1",
  children: [
               {id: 2,
               name: "test 1-sub",
               children: []}
            ]
}]

Предполагая массив json, похожий на описанный выше, где каждый элемент может иметь или не иметь дочерних элементов, и он может достигать 9 уровней.

Если я хочу знать, где я нахожусь на дереве, и могу идти вверх или вниз по дереву. Я знаю, что по пути вниз я могу просто перейти к индексу выбранного дочернего элемента, чтобы увидеть их. Как мне вернуться на дерево?

В основном я думаю, что у меня будет два элемента на странице. Основной массив, содержащий данные, один элемент для обозначения текущего массива, с которым я работаю.

codes: any = [];
currentCode: any = {};

Чтобы упростить чтение и навигацию, я собираюсь отображать только один уровень дерева за раз, поэтому основной код с дочерними элементами под ним.

Нужно ли мне хранить карту пути, который я выбрал, чтобы добраться туда, где я нахожусь, и каждый раз спускаться с вершины, чтобы добраться до точки, в которой я хочу быть?

Я надеюсь, что это не слишком смущает.

1 ответ

При условии, что:

  • Идентификаторы уникальны
  • Вам нужно только добраться до родителя и не нужно весь путь

Есть два варианта. Если вы можете изменить JSON или сохранить его копию, вы можете добавить _parent поле для каждого узла. Если вы не хотите этого делать, вы можете сохранить карту, для которой ключи являются идентификаторами, а значения - родительскими ссылками.

В любом случае вы можете заполнить дополнительные данные путем рекурсивного обхода дерева.

Другие вопросы по тегам