我的第一次调用我的重绘函数调用了一个'系列',但是如果我再次为同一个'系列'调用它,我在返回d时得到'TypeError:d is undefined'。 y在我的重绘函数的下面代码片段中输入行。
var series = menu.property("value");
var data = nested[series];
var columnHeaders = d3.keys(data[0]).filter(function(key) { return key !== "Code" && key !=="Year" && key !== "LA" && key !=="LA2";});
data.forEach(function(d) {
var yColumn = new Array();
var yBegin;
var yEnd;
d.columnDetails = columnHeaders.map(function(name) {
for (ic in innerColumns) {
if($.inArray(name, innerColumns[ic]) >= 0){
if (!yColumn[ic]){
yColumn[ic] = 0;
}
yBegin = yColumn[ic];
yColumn[ic] += +d[name];
return {name: name, column: ic, yBegin: yBegin, yEnd: +d[name] + yBegin,};
}
}
});
mytotal= d3.max(d.columnDetails, function(d) {
return d.yEnd;
});
});
我发现通过更改最后两行来测试d是否未定义如下,我的问题已经解决,但我不明白为什么错误发生在第一位。
mytotal= d3.max(d.columnDetails, function(d) {
if (d === undefined){return;}
return d.yEnd;
});
检查对象显示,虽然columnDetails在第一次调用中有9个对象,但后续它有10个但是第十个未定义。我不明白为什么它应该成长。任何人都可以提出正在发生的事情吗?