下午好。
我加载了一个带有信息的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);
}
}
}
答案 0 :(得分: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对象的数组。
最佳选择应该是更改管理数组的代码,因此它使用回调来获取元素,并使用此回调以dinamically方式确定json层次结构中所需的元素。