我有一個看起來像這樣的網絡數據的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