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
Post a Comment