使用 D3.min 查找非 0 的最小值

Use D3.min to find lowest value that is not 0

我正在尝试使用 D3 查找数据集中的最低值。但是,我也有值为 0 的值,但我希望 D3 找到非 0 的最低值。

目前我正在使用:

d3.min(data, function(d) {return d.houseValues; })

但显然这个 returns 0 有时,当找到 0 时。

有办法吗?或者是使用 if 语句构建普通 for 循环以忽略 0 值的唯一解决方案..?

谢谢!

首先尝试过滤数据以删除零,例如

var noZeroes = data.filter(function(d) { return d.houseValues !== 0; });
d3.min(noZeroes, function(d) {return d.houseValues; })

您可以使用常量 Infinity,因为 Math.min(Infinity, someNumber) 总是 return someNumber(除非 someNumber 也是无穷大)。所以它看起来像这样:

smallest = d3.min(data, function(d) {return d.houseValues || Infinity; })

如果需要,您可以检查 smallest == Infinity,在所有房屋价值均为 0 的情况下,这将是 true