@kost_p
новичок

Как cоставить дерево с сгенерированным ключем обозначения уровня вложенности из плоского массива?

Вопросов, как мой уже наверно было задано достаточное количество. Но я все равно хочу попросить помощи. Необходимо составить дерево из плоского массива. (Вся задача на React). Пример массива и выполнение ниже. Объекты у которых есть ключ group-id, будут ребенками(вложенными), соответственно объекты у которых этого ключа нет, будут являться корневыми. Какой размерности приходящий массив и какая будет вложенность не известно. Погуглив я нашел инфу\функцию listToTree(), которую немного адаптировал под себя:

Пример Codepen

Проблема такая, я не знаю как добавлять новый ключ на определенный уровень. ну например на первом уровне вложенности, для всех объектов ключ должен быть
group
, на втором уровне
subgroup
, на третьем уровне
device
. Или можно как-нибудь динамически генерировать ключ типа l
evel1, level2... leveln
. Для чего мне это нужно: На странице у меня есть селекты, при выборе элемента из первого уровеня у меня добавляется новый селект с чилдренами:
60261f85bd975836225974.png
Так же при изменении селектов у меня меняется роут и подгружается новый компонент. Массив с роутами:
const routes = [
  {
    id: 1,
    path: "/",
    component: HomePage,
  },
  {
    id: 2,
    path: "/group/:id",
    component: GroupContentPage,
  },
  {
    id: 3,
    path: "/group/:id/device/:id",
    component: DeviceContentPage,
  },
  {
    id: 4,
    path: "*",
    component: ErrorPage,
  },
];

Вот мне и нужно сделать как-то новый ключ в дереве с названием уровня, чтобы я мог как-то за это зацепиться и сделать роут при
onChange
селекта. Я извиняюсь, что загрузил Вас таким большим описанием, но старался раскрыть задачу более конкретно. Заранее спасибо!
  • Вопрос задан
  • 30 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы