在javascript中将json键/值数据解析为基于节点的数据
我很难将我的头脑围绕键值(即数组)缠绕到基于节点的/treemap结构中。下面是一些帮助解释的示例代码 我想把这个转换成在javascript中将json键/值数据解析为基于节点的数据,javascript,json,treemap,Javascript,Json,Treemap,我很难将我的头脑围绕键值(即数组)缠绕到基于节点的/treemap结构中。下面是一些帮助解释的示例代码 我想把这个转换成 // key value data var rawData = { "1": [], "2": [10], "3": [2,5,11], "4": [], "5": [1,7,6], "6": [4], "7": [], "8": [9], "9": [], "10": [], "11":
// key value data
var rawData = {
"1": [],
"2": [10],
"3": [2,5,11],
"4": [],
"5": [1,7,6],
"6": [4],
"7": [],
"8": [9],
"9": [],
"10": [],
"11": []
}
到这个树地图
// tree map
var treeData = {
"id": "ALL",
"contents": [
{
"id": "3",
"contents": [
{
"id": "2",
"contents": [
{ "id": "10" }
]
}, {
"id": "5",
"contents": [
{ "id": "1" },
{ "id": "7" },
{
"id": "6",
"contents": [
{ "id": "4" }
]
}
]
},
{ "id": "11" }
]
},
{
"id": "8",
"contents": [
{ "id": "9" }
]
}
]
}
我相信其中涉及某种形式的递归,但我在遍历节点时遇到了困难
var traverse = function(rawData) {
for (var i in rawData){
var datum = rawData[i];
for (var j in datum) {
if(i===datum[j]){
// tack on node to datum
}
traverse(rawData);
}
}
}
不可能使用for in在数组中进行迭代,而是:
for (var j = 0; j < datum.length; i++) {
if(i===datum[j]){
// tack on node to datum
}
traverse(rawData);
}
for(var j=0;j