我有一个看起来像这样的网络数据的CSV文件:为什么我的map函数不能返回d3 js中的所有csv文件行?
node,edges,centrality_degree
1,"[(1, 2), (1, 3), (1, 4), (1, 5)]",1.0
2,"[(2, 1), (2, 3), (2, 4), (2, 5)]",1.0
3,"[(3, 1), (3, 2), (3, 4), (3, 5)]",1.0
4,"[(4, 1), (4, 2), (4, 3), (4, 5)]",1.0
5,"[(5, 1), (5, 2), (5, 3), (5, 4)]",1.0
的目标是产生一个网络中的所有数据。我已经在绘制节点了。但是,我遇到了试图映射边缘的问题。下面的代码只是正确地返回了五个第一个节点对,但它在那里停止。
var list = [];
d3.csv("/graphs/documents/1/2015/10/15/16_43_12_data.csv", function(error, d) {
// var links_list = [ {"source": 1, "target": 0},{"source": 2, "target": 0},{"source": 3, "target": 0}, {"source": 4, "target": 0}];
// var nodes = [ {"name": 1}, {"name":2}, {"name":3}, {"name":4}, {"name":5}];
var nodes = d.map(function(d){ return {"name":+d.node}; });
var links_list = d.map(function(d) {
list_array = JSON.parse(d.edges.replace(/\(/g,"[").replace(/\)/g,"]"));
console.log(list_array);
var i, len = list_array.length;
for (i=0; i<len; i++) {
var s = arrayObjectIndexOf(nodes, list_array[i][0], "name");
var t = arrayObjectIndexOf(nodes, list_array[i][1], "name");
list.push({source: s ,target: t });
return {source: s , target: t };
}
});
... #create the graph using the data
});
了var links_list返回5名对象,其中所述一对源,目标的阵列对应于所述的值: (1,2),(1,3),(1,4) ,(1,5),(2,1)
当我在console.log(list_array)上打印时,它返回具有4个元素的数组5次。 links_list为什么不计算这些值? 列表数组也返回相同的东西......发生了什么?这是一个逻辑问题吗?我感谢您的帮助。
list_array是一个包含五个元素的数组。所以当你把我放到len上的时候,你会推到列表五次。 – ee2Dev