d3.csv函数类型如何工作?

时间:2018-04-10 16:09:18

标签: javascript d3.js

我正在观看关于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中的每个元素,该函数只调用一次或一次吗?

1 个答案:

答案 0 :(得分:-2)

According to the docsd3.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来证明你的情况,但不会复制这个问题。

<强>更新

要回答更新的问题:按照上面的说明,每行调用一次函数。