@Pentblch
Смотрю в сторону Web, начинающий

Как из плоского массива с объектами сделать вложенный (иерархический)?

Доброго времени суток!

Подскажите, пожалуйста, как реализовать такую штуку, в поиске и гугле не получилось найти.
Дано:
[
   {'uid': '1', 'parentUid': null},
   {'uid': '2', 'parentUid': null},
   {'uid': '11', 'parentUid': '1'},
   {'uid': '12', 'parentUid': '1'},
   {'uid': '21', 'parentUid': '2'},
   {'uid': '22', 'parentUid': '2'},
   {'uid': '13', 'parentUid': '1'},
   {'uid': '23', 'parentUid': '2'},
   {'uid': '231', 'parentUid': '23'},
   {'uid': '232', 'parentUid': '23'},
   {'uid': '111', 'parentUid': '11'},
   {'uid': '112', 'parentUid': '11'},
   {'uid': '1111', 'parentUid': '111'}
]

Есть массив, его элементы нужно расставить иерархически, при условии того, что элементы не обязательно будут в таком порядке и корневые элементы могут быть в самом конце массива.
Как такое проделать?
  • Вопрос задан
  • 234 просмотра
Решения вопроса 1
search
@search
мама говорит что я особенный
Вот так jsfiddle.net/alexandrupausan/qjxpLhfu

Гугл знает больше, если искать на языке, которым пользуется полтора миллиарда человек ;)

https://www.google.nl/search?q=javascript+flat+arr...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
DaFive
@DaFive
var arr = [
   {'uid': '1', 'parentUid': null},
   {'uid': '2', 'parentUid': null},
   {'uid': '11', 'parentUid': '1'},
   {'uid': '12', 'parentUid': '1'},
   {'uid': '21', 'parentUid': '2'},
   {'uid': '22', 'parentUid': '2'},
   {'uid': '13', 'parentUid': '1'},
   {'uid': '23', 'parentUid': '2'},
   {'uid': '231', 'parentUid': '23'},
   {'uid': '232', 'parentUid': '23'},
   {'uid': '111', 'parentUid': '11'},
   {'uid': '112', 'parentUid': '11'},
   {'uid': '1111', 'parentUid': '111'}
   ];
   
   arr.sort(function(a,b){
   	return Number(a['parentUid']) - Number(b['parentUid']);
   });
   console.log(arr);


UPD: сорян, понял что нужно дерево. Ответ ниже.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы