Javascript D3CSV返回行

Javascript D3CSV返回行,javascript,csv,d3.js,Javascript,Csv,D3.js,这来自d3csv API文档: d3.csv("path/to/file.csv") .row(function(d) { return {key: d.key, value: +d.value}; }) .get(function(error, rows) { console.log(rows); }); 如何将行传递给var数据,而不仅仅是console.log。我只需要csv的数据,但我不熟悉JavaScript。这里的答案只适用于d3 v4及以下版本。从D3V5开始,这

这来自
d3
csv API文档:

d3.csv("path/to/file.csv")
    .row(function(d) { return {key: d.key, value: +d.value}; })
    .get(function(error, rows) { console.log(rows); });

如何将
传递给
var数据
,而不仅仅是
console.log。我只需要csv的数据,但我不熟悉JavaScript。

这里的答案只适用于d3 v4及以下版本。从D3V5开始,这个方法已经改变了。有关最新的解决方案,请参阅。

请记住,不可能让
d3.csv()
返回任何数据,因为必须首先加载数据。这就是我们使用回调函数的原因,一旦加载数据就会调用回调函数(您可以通过研究“异步javascript”了解更多信息)

您仍然可以将加载的数据分配给变量,但必须记住异步函数的含义

// This will be assigned to rows, once the data is ready.
var myData = null;

d3.csv("path/to/file.csv")
    .row(function(d) { return {key: d.key, value: +d.value}; })
    .get(function(error, rows) {
      console.log(rows);
      myData = rows;// Now you can assign it
      myDataIsReady()// Now you can draw it
    });

// IMPORTANT NOTE! Here myData is still null
console.log(myData);// will trace null

function myDataIsReady() {
  console.log(myData);// will trace the data that was loaded
  // Here you can draw your visualization
}
关键是,在CSV加载并解析之前,您无法绘制任何内容。因此,无论如何,您的绘图代码必须存在于从
d3.csv
回调调用的某个函数中


可以将代码的结构设置为不需要将
分配给变量(只需将
传递到绘制数据的函数中即可)。

您的意思是要将行保存到
数据
数组中吗?请看图片,
数据
在那边。请注意,d3 v5更改了此方法,请参见: