我正在观看关于D3.js的教程,我无法理解d3.csv函数是如何工作的。
d3.csv("data.csv", type, function (myArrayOfObjects){
myArrayOfObjects.forEach(function (d){
console.log(d.x + d.y);
});
});
function type(d){
d.x = parseFloat(d.x);
d.y = parseFloat(d.y);
return d;
}
data.csv包含此值
x,y
100,100
130,120
80,180
180,80
180,40
该功能正常,在控制台上打印正确的值,但我无法理解对类型功能的调用是如何工作的。 我认为 type 函数为CSV文件中的每个元素调用一次,但是在插入console.log语句之后我发现它只被调用一次。如何获取所有数据而不仅仅是第一对元素?
谢谢
编辑: 这是结果:
200
250
260
260
220
对于csv中的每个元素,该函数只调用一次或一次吗?
答案 0 :(得分:-2)
According to the docs,d3.csv
通过调用第二个参数来实现本质上是一个map函数。它声明您的示例等同于:
d3.request("data.csv")
.mimeType("text/csv")
.response(function(xhr) { return d3.csvParse(xhr.responseText, type); })
.get(callback);
How d3 delimited works.这是doc空间,是csvParse
的基础代码。
dsv.parseRows(string[, row])
是表示In effect, row is similar to applying a map and filter operator to the returned rows.
我创建了一个小fiddle来证明你的情况,但不会复制这个问题。
<强>更新强>
要回答更新的问题:按照上面的说明,每行调用一次函数。