I'm trying to use D3 to find the lowest value in my dataset. However, I also have values that are 0, but I want D3 to find the lowest value that is not 0.
Currently I am using:
d3.min(data, function(d) {return d.houseValues; })
But obviously this returns 0 sometimes, when a 0 is found.
Is there a way to do this? Or is the only solution to build a normal for-loop with an if-statement to ignore the 0 values..?
Thanks!
You can use the constant Infinity
, since Math.min(Infinity, someNumber)
always return someNumber
(unless someNumber
is also infinity). So it'll look like this:
smallest = d3.min(data, function(d) {return d.houseValues || Infinity; })
If needed, you can check smallest == Infinity
, which would be true
in the case that all house values were 0.
Try filtering the data to remove zeroes first, e.g.
var noZeroes = data.filter(function(d) { return d.houseValues !== 0; });
d3.min(noZeroes, function(d) {return d.houseValues; })
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With