How can I build a hierarchy tree from flat data in JavaScript? -


i have json data :

data = [{"id":"1", "name":"abc", "parent":""}, {"id":"2", "name":"abc", "parent":"1"}, {"id":"3", "name":"abc", "parent":"2"},{"id":"4", "name":"abc", "parent":"2"}] 

i want transform data hierarchy tree :

root: {         id:"1",         name:"abc",          parent:"",         0: {             id:"2",             name:"abc",             parent:"1",              0:{                 id:"3",                 name:"abc",                 parent:"2",              1:{                 id:"4",                 name:"adb",                 parent:"2", ..... } 

currently have idea make array object format won't work me. because need format treetable in sapui5.

thank help.

your json example not make sense completely, have array hold child nodes. here's example should easy adapt different structures. there room optimization, , of loops combined more efficient code. broke things different loops make code more understandable. sure there other approaches, one:

var data = [{"id":"1", "name":"abc", "parent":""}, {"id":"2", "name":"abc", "parent":"1"}, {"id":"3", "name":"abc", "parent":"2"},{"id":"4", "name":"abc", "parent":"2"}];  // flatten object string keys can referenced later var flat = {}; (var = 0; < data.length; i++) {   var key = 'id' + data[i].id;   flat[key] = data[i]; }  // add child container array each node (var in flat) {   flat[i].children = []; // add children container }  // populate child container arrays (var in flat) {   var parentkey = 'id' + flat[i].parent;   if (flat[parentkey]) {     flat[parentkey].children.push(flat[i]);   } }  // find root nodes (no parent found) , create hierarchy tree them var root = []; (var in flat) {   var parentkey = 'id' + flat[i].parent;   if (!flat[parentkey]) {       root.push(flat[i]);   } }  // here is! window.console.log(root); 

Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -