Перегруппировка массива

Делаю простенький експлорер на ангуларе (то есть, список директорий, в которых могут быть свои директории, в которых текстовые файлы). Вопрос в следующем: я получаю с сервера такие данные (path - это путь папки, id'шники директорий-родителей):

[
  {
    id: "6np5E3yyEISXLNX9muyt",
    name: "sec list",
    path: ["", "GnBOclNO1v3n9FW7aGv0", "X5YNJ6Vco2BtGxNZVsYV"],
    type: "file",
  }, {
    id: "GnBOclNO1v3n9FW7aGv0",
    name: "In aeroport",
    path: [""],
    type: "directory",
  },

  {
    id: "H6AvpwXc49v4oDRWSjym",
    name: "Delete",
    path: [""],
    type: "directory",
  },
  {
    id: "LQ73vVoTuw9xd40jMs3j",
    name: "Aeroport list",
    path: [""],
    type: "file"
  }, {
    id: "X5YNJ6Vco2BtGxNZVsYV",
    name: "Bordery words",
    path: ["", "GnBOclNO1v3n9FW7aGv0"],
    type: "directory",
  }, {
    id: "jWeClRAw55Er8z0Ow9uq",
    name: "mail list",
    path: ["", "GnBOclNO1v3n9FW7aGv0", "X5YNJ6Vco2BtGxNZVsYV"],
    type: "file"
  }
];

Как можно этот код перегруппировать в следующий (чтобы наглядно было, какая папка где находится):

[
  {
    id: "GnBOclNO1v3n9FW7aGv0",
    name: "In aeroport",
    type: "directory",
    children: [
      {
        id: "X5YNJ6Vco2BtGxNZVsYV",
        name: "Bordery words",
        type: "directory",
        children: [
          {
            id: "6np5E3yyEISXLNX9muyt",
            name: "sec list",
            type: "file"
          },
          {
            id: "jWeClRAw55Er8z0Ow9uq",
            name: "mail list",
            type: "file"
          }
        ],
      }
    ],
  },
  {
    id: "H6AvpwXc49v4oDRWSjym",
    name: "Delete",
    type: "directory",
  },
  {
    id: "LQ73vVoTuw9xd40jMs3j",
    name: "Aeroport list",
    type: "file",
  },
]

Понимаю, что нужна рекурсия, но не могу даже приставить к чему именно ее прицепить. Рекурсивно перебирать массивы path? Или есть другой путь? Помогите, пожалуйста


Ответы (0 шт):