使用javascript动态生成树

使用javascript动态生成树,javascript,tree,Javascript,Tree,我有一个树形结构,如下所示: { "7": ["3", "8"], "3": ["2", "4", "1"], "4": ["5", "6"], "8": ["12", "13"] } 这个字典仅仅意味着树的根节点是7(因为它不是任何其他节点的子节点),它有两个子节点3和8,而3有三个子节点(2,4,1),8有两个子节点(12,13)。3有一个孩子4有两个孩子(5,6) 我的问题是,我需要一个动态树生成器,因为每次运行代码时,我都会有不同的树结构(它们不是二叉树

我有一个树形结构,如下所示:

{
    "7": ["3", "8"],
    "3": ["2", "4", "1"],
    "4": ["5", "6"],
    "8": ["12", "13"]
}
这个字典仅仅意味着树的根节点是7(因为它不是任何其他节点的子节点),它有两个子节点3和8,而3有三个子节点(2,4,1),8有两个子节点(12,13)。3有一个孩子4有两个孩子(5,6)

我的问题是,我需要一个动态树生成器,因为每次运行代码时,我都会有不同的树结构(它们不是二叉树!)。我的代码是用python编写的,我想在web中显示树


是否有任何javascript库可用于绘制此树

您可以迭代对象的键,并使用所有关系构建一个新的临时对象。然后从根数组中删除具有前置项的所有键

返回具有根键和所有子项的新对象

var数据={7:[“3”、“8”]、3:[“2”、“4”、“1”]、4:[“5”、“6”]、8:[“12”、“13”],
树=函数(对象){
var root=Object.keys(数据),
o=对象。创建(空),
r=Object.create(空);
root.slice().forEach(函数(k){
o[k]=o[k]|{};
数据[k].forEach(函数(a){
var p=根指数(a);
如果(p!=-1){
根部拼接(p,1);
}
o[a]=o[a]|{};
o[k][a]=o[a];
});
});
r[root]=o[root];
返回r;
}(数据);
控制台日志(树)

.as控制台包装{max height:100%!important;top:0;}
请求一个库是ot。有任意数量的库;我先看看。虽然如果你想画像这样的病理树,而其中不存在节点,你可能会遇到麻烦。@DaveNewton,我可以保证,这棵树应该是有效的。:)这可能有助于: