我正在尝试使用d3.csv()方法导入.csv文件。这是我的代码:
d3.csv("data.csv", function(data) {
console.log(data);
})
我想我会得到一个包含对象的数组,每个对象代表我的.csv文件的一行(其中有50个)。我实际上得到的是一系列独立的对象。也就是说,该函数已将50个对象记录到我的控制台中,而不是一个包含50个对象的数组。我会误解这种方法吗?如果是这样,我如何获得这样的阵列?
答案 0 :(得分:0)
在d3 v5 中,用于获取数据的API发生了很大变化,由于基础工作已从使用XMLHttpRequest
切换为Fetch API,这变得很有必要。在D3到v4的早期版本中,您的代码将按照您期望的那样打印单个结果数组。 d3.csv()
的新API如下所示:
进一步,文档提供了explanation供您观察:
如果仅指定 init 和 row 中的一个,则将其解释为 row 转换函数,否则为初始化对象。
在您的代码中,d3.csv()
的第二个参数是一个函数,因此被解释为行转换函数。由于行转换功能是针对输入文件中的每一行执行的,因此您会看到每个对象都是单独打印的,而不是一次打印整个数组。
由于d3.csv()
返回了Promise,因此正确用法如下:
d3.csv("data.csv")
.then(function(data) {
console.log(data);
});
这里data
是指整个对象数组。