【发布时间】:2020-11-21 19:37:00
【问题描述】:
CSV 文件数据:
parent_name, child_name
A1, A2
A1, A3
A1, A4
A1, A5
A2, A12
A2, A16
A2, A18
A2, A19
输出:要制作的 Javascript 对象
{
name: A1,
children: [
{
name: A2,
children: [
{
name: A4,
children: []
}
]
},
{
name: A3,
children: []
}
}
基本上,我必须转换 CSV 文件才能在 d3 中创建树。 我想知道如何制作 CSV 文件所需的字典
d3.csv("test1.csv").then(function (data) {
var dataset = {};
data.forEach(function (d,i){
console.log(d.parent_name, d.child_name);
if(i === 0){
dataset["name"] = d.parent_name;
dataset["children"] = [];
}
if (dataset["name"] === d.parent_name){
dataset.children.push(NodeMaker(d.child_name))
}
});
function NodeMaker(name){
return {"name": name, "children": []};
}
console.log(dataset);
});
所以这是我的代码,它只制作一个类似字典的代码, 它不会比根节点的第一级更深
{
name: A1,
children: [
{
name: A2,
children: []
},
{
name: A3,
children: []
}
]
}
【问题讨论】:
-
你能告诉我
'A3'要去哪里吗? -
您的示例输出似乎错误,因为输出中没有 A3 的迹象。
-
请加你试试。出了什么问题?
-
更新了@NinaScholz 出了什么问题
-
为什么不使用
d3.stratify()。这正是它的目的所在。
标签: javascript csv d3.js