3

下午好。

我加载了一个包含信息的 json 文件,以在 D3 中创建可折叠的力布局。我可以访问数据,尽管我可以将值传递到 var 链接中,它是一个对象数组,负责创建可视化。任何人都可以帮助将数据从 json 传递到 var 链接。剧本炸了。我需要创建一个 var 链接,如下所示,其中 source = beforePos 和 target ?afterPos 并且类型是字符串“medium”

var links = [{source: "beforePos", target: "afterPos", type: "medium"},];

注意:加载的 json 很大。

任何人都可以帮助我!

var links = [];
for (i = 0; i < jsonFile.generations.length; i++) {
    for (j = 0; j < jsonFile.generations[i].nodes.length; j++) {
        for (w = 0; w < jsonFile.generations[i].nodes[j].after.stid.length; w++) {
            afterPos = jsonFile.generations[i].nodes[j].after.stid[w];
            beforePos = jsonFile.generations[i].nodes[j].before.stid[w];
            var test = {
                source: beforePos,
                target: afterPos,
                type: "medium"
            };
            links.push(test);
        }
    }
}
4

1 回答 1

1

根据您的描述,最好的选择是通过缓存元素来加快处理速度。

var links = [];
JG = jsonFile.generations;
for (i = 0, endI = JG.length; i < endI ; i++) {
    JGIN = JG[i].nodes;
    for (j = 0, endJ = JGIN.length ; j < endJ ; j++) {
        JGINJ = JGIN[j];
        JGINJAS=JGINJ.after.stid;
        JGINJBS=JGINJ.before.stid;
        for (w = 0,  endW = JGINJAS.length; w < endW ; w++) {
            links.push({
                source: JGINJAS[w], target: JGINJBS[w], type:"medium"
            });
        }
    }
}

这减少了所需的时间,但不会避免创建 i*j*w 对象数组。

最好的选择应该是更改管理数组的代码,因此它使用回调来获取元素,并使用此回调动态地确定所需的 json 层次结构中的元素。

于 2013-10-25T16:32:19.280 回答