Рекурсия по дереву

173
29 декабря 2017, 02:27

Есть примерно такой набор данных и по ним нужно построить дерево категорий.

Main
   DATA
      Images
           1.png
      Videos
           1.avi
      Music
   TEST

0:{name: "Images",  .., parent: "Data"}
1:{name: "1.png", .., parent: "Images"}
2:{name: "Musics", .., parent: "Data"}
3:{name: "Data", .., parent: "MAIN"}
4:{name: "Videos", ..", parent: "Data"}
5:{name: "1.avi", ..", parent: "Videos"}
6:{name: "Test", ..", parent: "MAIN"}

Есть функция для построения этого дерева

function tree(parent, arr) {
arr.forEach(function (item) {
    if (parent !== item.parent) {
        return;
    }
    //build tree   
tree(item.name, arr);
});
}

Всё работает и строится, но при относительно небольшом наборе данных (например при 50 элементов - 2550 проходов) количество проходов огромное, каким образом можно улучшить проход чтобы уменьшить количество итераций? Или есть какой-то другой подход в этом случаи?

READ ALSO
Одинаковая высота div в 2 разных секциях по :nht-child

Одинаковая высота div в 2 разных секциях по :nht-child

Как передать значение height изrem в

287
Добавление элементов в разметку

Добавление элементов в разметку

Как с помощью JS динамически добавлять новые контроллы (input, div и тд) ? Пробую так :

205
Как передать arguments вложенной функции?

Как передать arguments вложенной функции?

Нужно сделать функцию, которая принимает две функции (простые матоперации), объединяет их в одну и возвращает её

318