Как из плоского массива с объектами сделать вложенный (иерархический)?
Вот так jsfiddle.net/alexandrupausan/qjxpLhfu
Гугл знает больше, если искать на языке, которым пользуется полтора миллиарда человек ;)
https://www.google.nl/search?q=javascript+flat+arr...
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: сорян, понял что нужно дерево. Ответ ниже.