我的block中有很多svg rects的情节。大多数我能够绘制并填充得很好,但是初始矩形不像我在彩色地图中那样是蓝色的:
var colorMap = {
0: "blue",
1: "red",
2: "yellow",
};
console.log()
表示正在传递正确的整数,并且对象正在关联正确的颜色。我的csv中的其他列是浮点数,但我的颜色映射的值是整数。该列的标题为id
,并取3个值中的1个:0,1或2.
我已经读过,当数字是浮点数而不是整数时,可能会发生此错误。但据我所知,它们都是整数。即使我的0条目不是整数(无论出于何种原因),为什么该列中的所有其他条目都能正常工作?如果让D3将某些数字识别为浮点数,将其他数字识别为同一列中的整数,这将非常直观。
也许它根本不是关于整数/浮点数,我可以忽略其他东西吗?
答案 0 :(得分:6)
在JavaScript中(以及我所知道的所有语言)0
都是假的,也就是说,它的评估结果为false
。 falsy values是:
false
null
undefined
NaN
话虽如此,这个:
.style('fill', function(d) {
var colorID = d.id;
if (colorID) {
return colorMap[colorID];
}
});
...当false
为零时评估为colorID
,因此当colorMap
为零时,它将避免您使用d.id
。
解决方案:放下它:
.style('fill', function(d) {
return colorMap[d.id];
});
或者,或者,如果您的目的只是检查属性是否存在:
.style('fill', function(d) {
var colorID = d.id;
if (colorID != undefined) {
return colorMap[colorID];
}
});
以下是您更新的bl.ocks:http://bl.ocks.org/anonymous/932089f945d5930ef8e7d8060b0d0bfe