【发布时间】:2016-12-16 16:47:03
【问题描述】:
我正在使用 D3 进行可视化,需要根据行索引合并 2 个数组:
var links =
[
{"source":"a0","target":"a0","s_portfolio":"a","t_portfolio":"a","SOURCE_TYPE":"APP","DES_TYPE":"APP"},
{"source":"a1","target":"a2","s_portfolio":"a","t_portfolio":"c","SOURCE_TYPE":"APP","DES_TYPE":"APP"},
{"source":"a1","target":"a2","s_portfolio":"a","t_portfolio":"c","SOURCE_TYPE":"APP","DES_TYPE":"APP"}
];
var files =
[
{"File_Desc":"","DataName":""},
{"File_Desc":"Date","DataName":"Dates.01012016"},
{"File_Desc":"Address","DataName":"Address.01012016"}
];
获得:
var result =
[
{"source":"a0","target":"a0","s_portfolio":"a","t_portfolio":"a","SOURCE_TYPE":"APP","DES_TYPE":"APP","File_Desc":"","DataName":""},
{"source":"a1","target":"a2","s_portfolio":"a","t_portfolio":"c","SOURCE_TYPE":"APP","DES_TYPE":"APP","File_Desc":"Date","DataName":"Dates.01012016"},
{"source":"a1","target":"a2","s_portfolio":"a","t_portfolio":"c","SOURCE_TYPE":"APP","DES_TYPE":"APP","File_Desc":"Address","DataName":"Address.01012016"}
]
【问题讨论】:
-
如果这些是您将使用的数据,那么只需手动合并它们并删除问题。如果数据来自两个文件或数据源并且该数据非常大,那么手动处理比您需要脚本来处理更难。您可以利用经典的“for”循环,其中每个链接对应于每个结果,即一对一的关系。是否有一些具体要求没有说明?
-
@Vlad - 数据集包含在 1 个文件中,而且非常大。我正在研究力导向图,其中链接宽度基于连接数。当我尝试传递整个数组(不将其一分为二)时,我无法计算节点之间的连接数。
-
任何类型的图实际上都是一种数据结构,因此您应该将其视为一种数据结构。图是包含节点和节点之间链接的结构。您可以使用邻接矩阵来解释哪个节点与哪个节点相连。当然,还可以为链接添加更多详细信息,也许还可以添加基于到一个节点的链接计算的链接权重?
-
@Vlad - 感谢您的反馈。我是 D3 和 JavaScript 的新手。但我肯定会研究邻接矩阵。
-
幸运的是我正在修改这个力导向图bl.ocks.org/GerHobbelt/3104394,你可以在这里查看优化代码:github.com/bluePlayer/practices/tree/master/D3js%20Exercises/… 遗憾的是它是在 D3 版本 2 中制作的。
标签: javascript d3.js collections