Перемещение вверх и вниз по многомерному массиву в 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
поле для каждого узла. Если вы не хотите этого делать, вы можете сохранить карту, для которой ключи являются идентификаторами, а значения - родительскими ссылками.
В любом случае вы можете заполнить дополнительные данные путем рекурсивного обхода дерева.