我正在尝试使用 d3.csv() 方法导入 .csv 文件。这是我的代码:
d3.csv("data.csv", function(data) {
console.log(data);
})
Run Code Online (Sandbox Code Playgroud)
我认为我会得到一个包含对象的数组,每个对象代表 .csv 文件的一行(其中有 50 个)。但我实际上得到的是一系列独立的对象。也就是说,该函数已将 50 个对象记录到我的控制台,而不是一个包含 50 个对象的数组。我是否误解了这个方法?如果是这样,我怎样才能得到这样的数组?
在 d3 v5中,用于获取数据的 API 发生了很大的变化,这是必要的,因为底层工作已经从使用 API 切换XMLHttpRequest
到 Fetch API。在 D3 到 v4 的早期版本中,您的代码的行为将与您期望的打印单个结果数组一样。d3.csv()
然而,新的 API看起来像这样:
下面的文档为您的观察提供了解释:
如果仅指定init和row之一,则如果它是函数,则将其解释为行转换函数,否则解释为 init 对象。
在您的代码中,第二个参数d3.csv()
是一个函数,因此被解释为行转换函数。由于行转换函数是针对输入文件中的每一行执行的,因此您会看到单独打印每个对象,而不是一次打印整个数组。
由于d3.csv()
返回一个 Promise,正确的用法将是这样的:
d3.csv("data.csv")
.then(function(data) {
console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
这里data
指的是整个对象数组。
归档时间: |
|
查看次数: |
2126 次 |
最近记录: |