Javascript 无法访问d3.csv()方法的回调函数中的“我的数据”
回调函数Javascript 无法访问d3.csv()方法的回调函数中的“我的数据”,javascript,csv,d3.js,Javascript,Csv,D3.js,回调函数draw似乎无法访问提供给d3.csv()的回调中的数据。在回调控制台中。log打印: 数据:空 背景信息:我的实际目标是使用类似Age或SURVIED的列作为x轴的范围。您的行转换函数,即d3.csv()的第二个参数不正确。有关详细信息,请查看: 如果指定了行转换函数,则为每一行调用指定的函数,并传递一个表示当前行(d)、第一个非标题行从零开始的索引(i)以及列名数组的对象。如果返回的值为空或未定义,则跳过该行,并将从dsv.parse返回的数组中进行committed;否则,返回值将
draw
似乎无法访问提供给d3.csv()
的回调中的数据。在回调控制台中。log
打印:
数据:空
背景信息:我的实际目标是使用类似Age或SURVIED的列作为x轴的范围。您的行转换函数,即
d3.csv()
的第二个参数不正确。有关详细信息,请查看:
如果指定了行转换函数,则为每一行调用指定的函数,并传递一个表示当前行(d
)、第一个非标题行从零开始的索引(i
)以及列名数组的对象。如果返回的值为空或未定义,则跳过该行,并将从dsv.parse返回的数组中进行committed;否则,返回值将定义相应的行对象
有两个问题:
d3.csv("modified_data_titanic.csv", function(d) { // in this case d is one row
d.Age = +d.Age;
d.Survived = +d.Survived;
return d;
}, draw);
访问器(或行)函数不正确
对于start,accessor函数不需要forEach。除此之外,您还必须返回每一行。总的来说,这些变化是:
d3.csv("modified_data_titanic.csv", function(d) {
d.Age = +d.Age;
d.Survived = +d.Survived;
return d;
}, draw);
返回forEach之后的数据<代码>data.forEach(函数(d){d.Age=+d.Age;d.surved=+d.surved;});返回数据代码>Thx很多。因为这篇文章,我使用了
forEach
:如果你重新阅读这篇文章,你会注意到有两种方法。第一个代码段使用两个参数调用d3.csv()
,其中没有提供转换函数。第二个参数是可选的!在回调中,数据
将保存完整的解析行数组。这可以使用.forEach()
进行迭代。然而,下面几段中的第二个代码片段确实提供了一个转换函数,即提供了三个参数,如您的问题中所述。选择哪种方式在很大程度上取决于您对数据预处理和后处理的需要。Thx很多。因为这篇文章,我使用了forEach
:
d3.csv("modified_data_titanic.csv", function(d) { // in this case d is one row
d.Age = +d.Age;
d.Survived = +d.Survived;
return d;
}, draw);
d3.csv("modified_data_titanic.csv", function(d) {
d.Age = +d.Age;
d.Survived = +d.Survived;
return d;
}, draw);