Javascript 将原始json转换为与d3兼容的数据集

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

这更像是一个算法问题。我有两张地图: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]
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之前,我想感谢您的帮助和努力。这真的解决了我的问题。再次感谢马克!在此之前,我要感谢你们的帮助和努力。这真的解决了我的问题。再次感谢马克!