@depressionofoleg

Конвертация плоского массива в иерархическое дерево?

Имеется массив:

[
      {
        "h1": "h001",
        "h2": "z001"
      },
      {
        "h1": "h002",
        "h2": "z002"
      },
      {
        "h1": "h003",
        "h2": "z003"
      }
    ]

Надо его преобразовать так, чтобы нулевой элемент был родителем остальных, первый был родителем второго и т.д.:

[{
        "h1": "h001",
        "h2": "z001",
        "children": {
            "h1": "h002",
            "h2": "z002",
            "children": {
                "h1": "h003",
                "h2": "z003"
              }
         } 
}]
  • Вопрос задан
  • 79 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
arr.reduceRight((p, c) => ({ ...c, child: p }))
Ответ написан
@DromHour
const example = (arr) => {
    let result = [];
    if (Array.prototype.hasOwnProperty.call(arr, 0) && arr[0] instanceof Object)
        result.push(arr[0]);
    let lastObj = result[0];
    for (let i = 1; i < arr.length; ++i) {
        const el = arr[i];
        if (el && el instanceof Object) {
            lastObj.children = el;
            lastObj = el;
        }
    }
    return result;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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