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

Так же при изменении селектов у меня меняется роут и подгружается новый компонент. Массив с роутами:
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
селекта. Я извиняюсь, что загрузил Вас таким большим описанием, но старался раскрыть задачу более конкретно. Заранее спасибо!