Я получил задание отображать комментарии рекурсивным образом, примерно так:
Данные, которые я получил с сервера, были плоскими, что означает:
каждый элемент в массиве содержит ссылку на своего родителя, например:
const entries = [
{
index: 1,
parent: 0
},
{
index: 2,
parent: 1
},
{
index: 3,
parent: 2
},
...
...
];
Подумав, как «атаковать» эту проблему, я понял
Если мне нужен рекурсивный объект, то самое простое решение — рекурсивное
Вот функция, которая преобразует плоский массив в массив дерева:
const arrayToTree = (arr, parent = 0) =>
arr.filter(item => item.parent === parent)
.map(child => ({ ...child, children: arrayToTree(arr,
child.index) }));
Краткий обзор:
- Сначала мы фильтруем дочерние элементы
root parent
. - Затем мы делаем то же самое с каждым из детей, которых мы только что схватили.
Мой ответ на вопрос о переполнении стека
Источники, которые мне помогли: