d3.js 中的 csv 到数组

标签 csv d3.js

我使用它来解析 csv 文件并创建 d3 文档中指定的数组数据:

d3.csv("afile.csv", function(data) {
    data.forEach(function(d) {
    d.date = formatDate.parse(d.date);
    d.price = +d.price;
});

但是,如果在这个方法之后我尝试调用data[0],它会说它是未定义的。这是因为 data 是一个引用,一旦 d3.csv() 超出范围就会被销毁吗?如果是这种情况我该如何克服这个问题。我需要引用 d3.csv()

中的数据

最佳答案

d3.csv 是一种异步方法。这意味着回调函数内部的代码在数据加载时运行,但回调函数之后和外部的代码将在请求发出后、数据尚不可用时立即运行。换句话说:

first();
d3.csv("path/to/file.csv", function(rows) {
  third();
});
second();

如果您想使用 d3.csv 加载的数据,您需要将该代码放入回调函数中(其中 third 位于上面):

d3.csv("path/to/file.csv", function(rows) {
  doSomethingWithRows(rows);
});

function doSomethingWithRows(rows) {
  // do something with rows
}

或者,您可以将其保存为窗口上的全局变量,以便稍后引用:

var rows;

d3.csv("path/to/file.csv", function(loadedRows) {
  rows = loadedRows;
  doSomethingWithRows();
});

function doSomethingWithRows() {
  // do something with rows
}

如果需要,您还可以将加载的数据显式分配给窗口对象,而不是声明一个变量然后管理两个不同的名称:

d3.csv("path/to/file.csv", function(rows) {
  window.rows = rows;
  doSomethingWithRows();
});

function doSomethingWithRows() {
  // do something with rows
}

关于d3.js 中的 csv 到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9491885/

相关文章:

java - 日语字符未正确显示转换 CSV 文件

javascript - D3 时间刻度 – 刻度(计数)产生错误,省略刻度(计数)不会产生错误

javascript - D3 工具提示错误 : "Cannot read property ' - 1' of undefined"

javascript - D3 中的 Map 函数,对传入的多个函数感到困惑

javascript - D3 中的 continue 等价于什么?

php - 我如何提示用户下载 PHP 生成的 .CSV 文件,我应该如何处理删除它?

r - 使用 R 将列表转换为 csv 文件

linux - CSV Bash 循环变量问题

Java - 线性搜索时出现 NumberFormatException

javascript - 外来对象文本未出现