我尝试使用D3查找数据集中的最低值。但是,我也有0的值,但我希望D3找到不是0的最低值。
目前我正在使用:
d3.min(data,function(d){return d.houseValues;})
但很明显,当找到0时,这有时会返回0。
有办法做到这一点吗?或者是使用if语句构建普通for循环以忽略0值的唯一解决方案..?
谢谢!
答案 0 :(得分:7)
您可以使用常量Infinity
,因为Math.min(Infinity, someNumber)
始终返回someNumber
(除非someNumber
也是无穷大)。所以它看起来像这样:
smallest = d3.min(data, function(d) {return d.houseValues || Infinity; })
如果需要,您可以检查smallest == Infinity
,如果所有房屋价值均为0,则为true
。
答案 1 :(得分:1)
首先尝试过滤数据以删除零,例如
var noZeroes = data.filter(function(d) { return d.houseValues !== 0; });
d3.min(noZeroes, function(d) {return d.houseValues; })