angularjs - Create JSON from nested set model javascript -


i have data structure show depth of each node in nested tree:

[   {     "name": "electronics",     "depth": 0   },   {     "name": "televisions",     "depth": 1   },   {     "name": "tube",     "depth": 2   },   {     "name": "plasma",     "depth": 2   },   {     "name": "game consoles",     "depth": 1   },   {     "name": "mp3 players",     "depth": 1   },   {     "name": "flash",     "depth": 2   }] 

i transform previews data javascript / node.js / angular hierarchical json this:

[{     "name": "electronics",     "children": [       {         "name": "televisions",         "children": [           {             "name": "tube"           },           {             "name": "plasma"           }]      },       {         "name": "game consoles"      },       {         "name": "mp3 players",         "children": [           {             "name": "flash"          }]     }] }] 

you use array#foreach , array reference depth.

var data = [{ "name": "electronics", "depth": 0 }, { "name": "televisions", "depth": 1 }, { "name": "tube", "depth": 2 }, { "name": "plasma", "depth": 2 }, { "name": "game consoles", "depth": 1 }, { "name": "mp3 players", "depth": 1 }, { "name": "flash", "depth": 2 }],      tree = [];    data.foreach(function (a, i, aa) {      var lastdepth = (aa[i - 1] || {}).depth, o;      if (a.depth !== 0 && a.depth > lastdepth) {          o = this[lastdepth][this[lastdepth].length - 1]          o.children = o.children || [];          this[a.depth] = o.children;      }      this[a.depth].push({ name: a.name });  }, [tree]);    console.log(tree);


Comments