将平面JSON文件转换为分层的json数据,例如flare.json [d3示例文件]

将平面JSON文件转换为分层的json数据,例如flare.json [d3示例文件],第1张

将平面JSON文件转换为分层的json数据,例如flare.json [d3示例文件]

更新为使用递归方法

这应该适用于

n
级别,而不只是2或3。您只需要指定哪些属性定义哪些级别即可。

var data = [    { "dep": "First Top", "name": "First child", "model": "value1", "size": "320" },    { "dep": "First Top", "name": "First child", "model": "value2", "size": "320" },    { "dep": "First Top", "name": "SECOND CHILD", "model": "value1", "size": "320" },    { "dep": "Second Top", "name": "First Child", "model": "value1", "size": "320" }];var newData = { name :"root", children : [] },    levels = ["dep","name"];// For each data row, loop through the expected levels traversing the output treedata.forEach(function(d){    // Keep this as a reference to the current level    var depthCursor = newData.children;    // Go down one level at a time    levels.forEach(function( property, depth ){        // Look to see if a branch has already been created        var index;        depthCursor.forEach(function(child,i){ if ( d[property] == child.name ) index = i;        });        // Add a branch if it isn't there        if ( isNaN(index) ) { depthCursor.push({ name : d[property], children : []}); index = depthCursor.length - 1;        }        // Now reference the new child array as we go deeper into the tree        depthCursor = depthCursor[index].children;        // This is a leaf, so add the last element to the specified branch        if ( depth === levels.length - 1 ) depthCursor.push({ name : d.model, size : d.size });    });});


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5128779.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存