我有一个对象数组,表示在D3强制有向图中使用的对象之间的id连接。源键和目标键都代表ID。它看起来像这样:
var links: [
{ source: 1, target: 0 },
{ source: 1, target: 2 },
{ source: 1, target: 3 },
{ source: 1, target: 4 },
{ source: 1, target: 5 },
{ source: 2, target: 3 },
{ source: 2, target: 4 },
{ source: 2, target: 5 },
{ source: 3, target: 4 },
{ source: 3, target: 5 },
{ source: 4, target: 5 },
{ source: 6, target: 7 },
{ source: 8, target: 7 },
{ source: 9, target: 7 },
{ source: 7, target: 0 } ]
Ids 1到5相互连接,这样当在d3中渲染时,您会看到它们形成一个五角星,就像它们在这里一样:http://jsfiddle.net/6DTMp/
你如何迭代这个数组来找到彼此互连的对象,就像ids 1到5一样?我正在寻找的最终结果是有一组id组成D3图形上构成5角星的节点。
答案 0 :(得分:0)
我用for / in迭代边缘并存储我在一个对象中看到的所有内容,该对象将id映射到相邻节点列表。
类似的东西。
var map = {};
for( var k in links ) {
var src = links[k].source;
var tgt = links[k].target;
if( typeof map[src] === "undefined" ) {
map[src] = [];
}
map[src].push(tgt);
if( typeof map[tgt] === "undefined" ) {
map[tgt] = [];
}
map[tgt].push(src);
}