Перегруппировка массива
Делаю простенький експлорер на ангуларе (то есть, список директорий, в которых могут быть свои директории, в которых текстовые файлы). Вопрос в следующем: я получаю с сервера такие данные (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? Или есть другой путь? Помогите, пожалуйста