这是来自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); });
我怎样才能通过rows
to a var data
而不仅仅是console.log
它。我只想要 csv 中的数据,但我不熟悉 JavaScript。
这里的答案仅适用于 d3 v4 及以下版本。从 d3 v5 开始,这种方法发生了变化。看这个答案以获得最新的解决方案。
请记住,这是不可能的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
打回来。
可以构建您的代码,以便您永远不需要分配rows
到一个变量(你只需传递rows
进入绘制数据的函数)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)