d3 csv readin a objects en matriz

Actualmente estoy tratando de usar el marco d3 para un enfoque de visualización universitaria. Para fines de testing, quiero leer un file csv y analizar las filas de objects dentro de una matriz.

Mi csv se ve así:

ID, Refernetworking To, TimeStamp, Votes, Comment 

Entonces quiero leerlo con las siguientes líneas:

 d3.csv("test_comments.csv", function(data) { commentlist = data.map(function(d) { return[+d["ID"], +d["Refernetworking To"], +d["TimeStamp"], +d["Votes"], +d["Comment"] ] }); }); 

Pero si luego quiero leer los valores, solo estoy "indefinido". También probé la forma en que mbostock describía este hilo: csv to array en d3.js

pero trabajar con una variable global tampoco funciona.

 var commentlist; d3.csv("test_comments.csv", function(data) { commentlist = data.map(function(d) { return[+d["ID"], +d["Refernetworking To"], +d["TimeStamp"], +d["Votes"], +d["Comment"] ] }); }); console.log(commentlist); 

¿Estoy entendiendo algo mal? Quizás tengas una solución para mí.

 var commentlist=[]; d3.csv("test_comments.csv", function(data) { commentlist=data; }); console.log(commentlist); 

Lo que sé es que en el object de callback contendrá una matriz de objects JSON de todas las filas de datos del file csv, que cada fila de datos se envía como formatting JSON a la matriz de datos. Como a continuación

 [{"ID": valueFromtheRow, "Refernetworking To": value, "TimeStamp": value, "Votes":value, "Comment":value}] 

La function de callback se invoca pasando la matriz de JSON. Entonces el object de datos se verá

 data=[{"ID": valueFromtheRow, "Refernetworking To": value, "TimeStamp": value, "Votes":value, "Comment":value}]; 

Espero que lo hayas entendido … Si no, pregúntame.

Creo que la razón por la que obtuviste {console.log (commentlist)} undefined es que dentro de d3.csv la function de callback es analizada y llamada por último por el browser, y {console.log (commentlist)} se llama antes aunque aparezca en el parte inferior de tu código. Por lo tanto, en el momento en que se llama a {console.log (list de comentarios)}, {list de comentarios} no está definida (solo está declarada). Una vez dicho esto, simplemente intente poner {console.log (commentlist)} dentro de la callback y debería hacer el trabajo.