Javascript 将原始json转换为与d3兼容的数据集
这更像是一个算法问题。我有两张地图:depthMap和ChildMap。DepthMap是一个javascript映射,由以下各项启动:Javascript 将原始json转换为与d3兼容的数据集,javascript,json,d3.js,Javascript,Json,D3.js,这更像是一个算法问题。我有两张地图:depthMap和ChildMap。DepthMap是一个javascript映射,由以下各项启动: let depthMap = new Map() 经过处理后,我在地图中获得以下数据: 0:[a,b,c,d] 1:[e,f] 2:[g,h,i] 3:[j] 类似地,我有一个childMap,初始化如下: let childMap = new Map() 处理后,childMap具有以下数据: a:[e,f] b:[] c:[] d:[] e:[g,h
let depthMap = new Map()
经过处理后,我在地图中获得以下数据:
0:[a,b,c,d]
1:[e,f]
2:[g,h,i]
3:[j]
类似地,我有一个childMap,初始化如下:
let childMap = new Map()
处理后,childMap具有以下数据:
a:[e,f]
b:[]
c:[]
d:[]
e:[g,h]
f:[i]
g:[]
h:[j]
i:[]
j:[]
现在我想用depthMap和childMap创建一个嵌套的JSON对象。我需要d3缩进树的数据集。最终的JSON应该如下所示:
{
name: 'a',
children: [
{
name:e
children: [
{
name: g,
children:[]
},
{
name: h,
children: [..]
}
]
},
{
name: f
children: [
{
name: i
children: []
}
]
}
]
},
...
我不太明白我该怎么做。我在考虑使用平凡的DFS算法来解析图,将chilMap视为邻接矩阵
但是,我不知道如何实现DFS来创建这样的JSON
任何帮助都将不胜感激。我想听听使用ES6/Javascript的方法。我会使用一些递归:
//基础数据
风险值数据={
“a”:[“e”,“f”],
“b”:[…],
“c”:[…],
“d”:[…],
'e':['g','h'],
“f”:[i'],
“g”:[…],
'h':['j'],
“我”:[…],
'j':[]
};
//递归函数
功能iterV(v){
返回v.map((k)=>{
var a=map.get(k);//get数组
map.delete(k);//从底图中删除
返回{
'name':k,
“children”:a?iterV(a):[]//递归迭代
};
});
}
//开球
var map=newmap(Object.entries(data)),//转换为map
first=map.entries().next().value,//获取映射中的第一个条目
嵌套={
名称:first[0],
children:iterV(first[1])//启动递归
};
控制台日志(嵌套);
我会使用一些递归:
//基础数据
风险值数据={
“a”:[“e”,“f”],
“b”:[…],
“c”:[…],
“d”:[…],
'e':['g','h'],
“f”:[i'],
“g”:[…],
'h':['j'],
“我”:[…],
'j':[]
};
//递归函数
功能iterV(v){
返回v.map((k)=>{
var a=map.get(k);//get数组
map.delete(k);//从底图中删除
返回{
'name':k,
“children”:a?iterV(a):[]//递归迭代
};
});
}
//开球
var map=newmap(Object.entries(data)),//转换为map
first=map.entries().next().value,//获取映射中的第一个条目
嵌套={
名称:first[0],
children:iterV(first[1])//启动递归
};
控制台日志(嵌套);
duplicate of duplicate of the duplicate of the之前,我想感谢您的帮助和努力。这真的解决了我的问题。再次感谢马克!在此之前,我要感谢你们的帮助和努力。这真的解决了我的问题。再次感谢马克!