Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中将json键/值数据解析为基于节点的数据_Javascript_Json_Treemap - Fatal编程技术网

在javascript中将json键/值数据解析为基于节点的数据

在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":

我很难将我的头脑围绕键值(即数组)缠绕到基于节点的/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": []
}
到这个树地图

// 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