@sugadu

Как преобразовать линейную структуру в иерархическую?

Есть простой линейный массив. Пример:
[
    { level: 0},
    { level: 1},
    { level: 2},
    { level: 1},
    { level: 2},
    { level: 1},
    { level: 2},
    { level: 3},
    { level: 3},
    { level: 4},
    { level: 2}
]


Нужо на основе уровней сделать иерархию. Для текущего примера она будет такая:
{
    level: 0,
    content: [
        {
            level: 1,
            content: [
                {
                    level: 2
                }
            ]
        },
        {
            level: 1,
            content: [
                {
                    level: 2
                }
            ]
        },
        {
            level: 1,
            content: [
                {
                    level: 2,
                    content: [
                        {
                            level: 3
                        },
                        {
                            level: 3,
                            content: [
                                {
                                    level: 4
                                }
                            ]
                        }
                    ]
                },
                {
                    level: 2
                }
            ]
        }
    ]
}


Помогите сооставить алгоритм.
  • Вопрос задан
  • 251 просмотр
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
Я бы предложил рекурсию. Всё, что возвращают более глубокие вызовы рекурсии, а также одиночные (без детей) ноды текущего уровня подцепляем на один уровень. Как только встретили в линейном массиве уровень выше, чем текущий - завершаем рекурсивную процедуру и подаем массив, который получился, в качестве результата вызова (он будет узлом для массива более высокого уровня).
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы