2015-03-25 7 views
5

Sto provando a usare D3 per trovare il valore più basso nel mio set di dati. Tuttavia, ho anche i valori che sono 0, ma voglio D3 per trovare il valore più basso che non è 0.Usa D3.min per trovare il valore più basso che non sia 0

Attualmente sto usando:

d3.min (dati, la funzione (d) {return d .houseValues;})

Ma ovviamente questo restituisce 0 a volte, quando viene trovato uno 0.

C'è un modo per farlo? O è l'unica soluzione per costruire un ciclo normale con un'istruzione if per ignorare i valori 0 ..?

Grazie!

risposta

7

È possibile utilizzare la costante Infinity, dal momento che Math.min(Infinity, someNumber) tornare sempre someNumber (a meno che non someNumber è anche infinito). Così che sarà simile a questa:

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

Se necessario, è possibile controllare smallest == Infinity, che sarebbe true nel caso in cui tutti i valori della casa erano 0.

1

Provare a filtrare i dati per rimuovere prima gli zeri, ad es.

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