Создание иерархической структуры из массива путей на JavaScript

Преобразование данных с путями в древовидную структуру

Получаю данные от API в формате JSON, где каждый элемент содержит путь к узлам как массив. Необходимо преобразовать их в иерархическую структуру для компонента дерева.

Исходные данные:

[
  {
    "title": "Элемент F1",
    "route": [
      "X",
      "Y",
      "Z"
    ]
  },
  {
    "title": "Элемент F2",
    "route": [
      "X",
      "Y",
      "Z"
    ]
  },
  {
    "title": "Элемент Y1",
    "route": [
      "X",
      "Y"
    ]
  },
  {
    "title": "Элемент X1",
    "route": [
      "X"
    ]
  },
  {
    "title": "Элемент W1",
    "route": [
      "V",
      "W"
    ]
  }
]

Нужная структура:

var treeData = [
  {
    'Title': 'X',
    'nodes': [
      {
        Title: 'Y',
        nodes: [
          {
            Title: 'Z',
            nodes: []
          }
        ]
      }
    ]
  }
]

Как можно решить эту задачу, используя чистый JavaScript без дополнительных библиотек? Буду благодарен за помощь с алгоритмом преобразования.

это классика при работе с API! я делал похожую штуку - один проход по массиву, создаёшь объект для ссылок на узлы, потом для каждого элемента строишь путь пошагово. сначала строй всю иерархию из route, потом добавляй элементы с title. и да, проверь порядок сортировки данных - иначе дерево может криво получиться.

Используй Map для быстрого поиска узлов. Создай пустой результат, пройдись по массиву данных. Для каждого route бери текущий уровень дерева и иди по пути - узел есть? Переходи к его children. Нет? Создавай новый. В конце добавь title как листовой элемент.

Интересная задачка! Я бы использовал рекурсию - функция проходит по каждому пути и строит дерево. Для каждого route итерируешься по элементам, проверяешь есть ли узел на текущем уровне, если нет - создаёшь новый. А что если у тебя дублирующиеся пути с разными title?