经过一场麻烦的斗争,我几乎想出了如何将平面 json 文件转换为分层文件。这个函数不是我自己写的。我从下面的帖子中复制了它。
但现在的问题是,帖子中编写的函数只有 2 级层次结构。但我正在寻找 4 级层次结构。我试图覆盖我失败的功能但是。
用我正在尝试的代码。
变量数据 = [ { "dep": "First Top", "name": "First child", "model": "value1", "size": "320" }, { "dep": "First Top", "name": "First child", "model": "value2", "size": "320" }, { "dep": "First Top", "name": "First child", "model": "value3", "size": "320" }, { "dep": "First Top", "name": "First child", "model": "value4", "size": "320" }, { "dep": "First Top", "name": "SECOND CHILD", "model": "value1", "size": "320" }, { "dep": "First Top", "name": "SECOND CHILD", "model": "value2", "size": "320" }, { "dep": "First Top", "name": "SECOND CHILD", "model": "value3", "size": "320" }, { "dep": "First Top", "name": "SECOND CHILD", "model": "value4", "size": "320" }, {“dep”:“第二个顶部”,“名称”:“第一个孩子”,“模型”:“value1”,“大小”:“320”}, {“dep”:“第二个顶部”,“名称”:“第一个孩子”,“模型”:“value2”,“大小”:“320”}, {“dep”:“第二个顶部”,“名称”:“第一个孩子”,“模型”:“value3”,“大小”:“320”}, {“dep”:“第二个顶部”,“名称”:“第一个孩子”,“模型”:“value4”,“大小”:“320”}, {“dep”:“第二个顶部”,“名称”:“第二个孩子”,“模型”:“value1”,“大小”:“320”}, {“dep”:“第二个顶部”,“名称”:“第二个孩子”,“模型”:“value2”,“大小”:“320”}, {“dep”:“第二个顶部”,“名称”:“第二个孩子”,“模型”:“value3”,“大小”:“320”}, {“dep”:“第二个顶部”,“名称”:“第二个孩子”,“模型”:“value4”,“尺寸”:“320”}, {“dep”:“第三个顶部”,“名称”:“第一个孩子”,“模型”:“value2”,“大小”:“320”}, {“dep”:“第三个顶部”,“名称”:“第一个孩子”,“模型”:“value3”,“大小”:“320”}, {“dep”:“第三个顶部”,“名称”:“第一个孩子”,“模型”:“value4”,“大小”:“320”}, {“dep”:“第三个顶部”,“名称”:“第一个孩子”,“模型”:“value5”,“大小”:“320”}, {“dep”:“第三个顶部”,“名称”:“第二个孩子”,“模型”:“value1”,“大小”:“320”}, {“dep”:“第三个顶部”,“名称”:“第二个孩子”,“模型”:“value2”,“大小”:“320”}, {“dep”:“第三个顶部”,“名称”:“第二个孩子”,“模型”:“value3”,“大小”:“320”}, {“dep”:“第三个顶部”,“名称”:“第二个孩子”,“模型”:“value4”,“大小”:“320”} ] var newData = {"name":"root", "children":{}} data.forEach(函数(d){ if(typeof newData.children[d.dep] !== 'undefined') { newData.children[d.dep].children.push(d) } 别的 { newData.children[d.dep] = {"name": d.dep, "children": [{"name": d.name, "children": [{"name": d.model, "size": d.size}]}]} } }) newData.children = Object.keys(newData.children).map(function (key) { return newData.children[key]; }); // 显示我们有什么 d3.select('body').append('pre') .text(JSON.stringify(newData, null, ' '));
当前代码的输出
{ “名称”:“根”, “孩子们”: [ { "name": "第一顶", “孩子们”: [ { "name": "第一个孩子", “孩子们”: [ { “名称”:“值1”, “尺寸”:“320” } ] }, { "dep": "第一顶", "name": "第一个孩子", “模型”:“值2”, “尺寸”:“320” }, { "dep": "第一顶", "name": "第一个孩子", “模型”:“值3”, “尺寸”:“320” }, { "dep": "第一顶", "name": "第一个孩子", “模型”:“值4”, “尺寸”:“320” }, { "dep": "第一顶", "name": "第二个孩子", “模型”:“值1”, “尺寸”:“320” }, { "dep": "第一顶", "name": "第二个孩子", “模型”:“值2”, “尺寸”:“320” }, { "dep": "第一顶", "name": "第二个孩子", “模型”:“值3”, “尺寸”:“320” }, { "dep": "第一顶", "name": "第二个孩子", “模型”:“值4”, “尺寸”:“320” } ] }, { "name": "第二名", “孩子们”: [ { "name": "第一个孩子", “孩子们”: [ { “名称”:“值1”, “尺寸”:“320” } ] }, { "dep": "第二名", "name": "第一个孩子", “模型”:“值2”, “尺寸”:“320” }, { "dep": "第二名", "name": "第一个孩子", “模型”:“值3”, “尺寸”:“320” }, { "dep": "第二名", "name": "第一个孩子", “模型”:“值4”, “尺寸”:“320” }, { "dep": "第二名", "name": "第二个孩子", “模型”:“值1”, “尺寸”:“320” }, { "dep": "第二名", "name": "第二个孩子", “模型”:“值2”, “尺寸”:“320” }, { "dep": "第二名", "name": "第二个孩子", “模型”:“值3”, “尺寸”:“320” }, { "dep": "第二名", "name": "第二个孩子", “模型”:“值4”, “尺寸”:“320” } ] }, { "name": "第三名", “孩子们”: [ { "name": "第一个孩子", “孩子们”: [ { “名称”:“值2”, “尺寸”:“320” } ] }, { "dep": "第三顶", "name": "第一个孩子", “模型”:“值3”, “尺寸”:“320” }, { "dep": "第三顶", "name": "第一个孩子", “模型”:“值4”, “尺寸”:“320” }, { "dep": "第三顶", "name": "第一个孩子", “模型”:“值5”, “尺寸”:“320” }, { "dep": "第三顶", "name": "第二个孩子", “模型”:“值1”, “尺寸”:“320” }, { "dep": "第三顶", "name": "第二个孩子", “模型”:“值2”, “尺寸”:“320” }, { "dep": "第三顶", "name": "第二个孩子", “模型”:“值3”, “尺寸”:“320” }, { "dep": "第三顶", "name": "第二个孩子", “模型”:“值4”, “尺寸”:“320” } ] } ] }
所需的输出格式:
{ “名称”:“根”, “孩子们”: [ { "name": "第一顶", “孩子们”: [ { "name": "第一个孩子", “孩子们”: [ { “名称”:“值1”, “尺寸”:“320” }, { “名称”:“值2”, “尺寸”:“320” }, { “名称”:“值3”, “尺寸”:“320” }, { “名称”:“值4”, “尺寸”:“320” } ] }, { "name": "第二个孩子", “孩子们”: [ { “名称”:“值1”, “尺寸”:“320” }, { “名称”:“值2”, “尺寸”:“320” }, { “名称”:“值3”, “尺寸”:“320” }, { “名称”:“值4”, “尺寸”:“320” } ] }, ] }, { "name": "第二名", “孩子们”: [ { "name": "第一个孩子", “孩子们”: [ { “名称”:“值1”, “尺寸”:“320” }, { “名称”:“值2”, “尺寸”:“320” }, { “名称”:“值3”, “尺寸”:“320” }, { “名称”:“值4”, “尺寸”:“320” } ] }, { "name": "第二个孩子", “孩子们”: [ { “名称”:“值1”, “尺寸”:“320” }, { “名称”:“值2”, “尺寸”:“320” }, { “名称”:“值3”, “尺寸”:“320” }, { “名称”:“值4”, “尺寸”:“320” } ] }, ] }, { "name": "第三名", “孩子们”: [ { "name": "第一个孩子", “孩子们”: [ { “名称”:“值1”, “尺寸”:“320” }, { “名称”:“值2”, “尺寸”:“320” }, { “名称”:“值3”, “尺寸”:“320” }, { “名称”:“值4”, “尺寸”:“320” } ] }, { "name": "第二个孩子", “孩子们”: [ { “名称”:“值1”, “尺寸”:“320” }, { “名称”:“值2”, “尺寸”:“320” }, { “名称”:“值3”, “尺寸”:“320” }, { “名称”:“值4”, “尺寸”:“320” } ] }, ] } ] }
我从一个星期开始就头疼,但我一个人无法弄清楚。有人请修改函数以获取分层格式的数据,因为我已经更新了。
提前致谢!!