Quiero comparar 2 valores en función de los cuales obtengo el color de mi leyenda. Pero desafortunadamente no puedo usar techo, piso o redondear los valores ya que afectará mi resultado.
Tengo la siguiente tabla de colores con el primer valor como punto y los 3 valores restantes son valores rgb.
Básicamente obtengo un punto del backend que puede ser 0.4607441262895224, 0.5500956769649571 y así sucesivamente. Necesito comparar el punto con el primer valor en la tabla de colores y dar el color correspondiente. Pero tengo problemas para comparar, ya que actualmente le he dado a Fixed (2) pero no se recomienda.
"colors": [ [ 0.00, 255, 13, 186 ], [ 0.25, 254, 4, 135 ], [ 0.50, 73, 255, 35 ], [ 0.75, 185, 116, 255 ], [ 1.00, 32, 50, 255 ] ] // main logic const test = arraySet.find((ele) => { // point is dynamic const point = 0.388920938 // I cannot use toFixed(2) here, which need to be changed // ele[0] is the first value in array 0.00, 0.25, 0.50 and so on return point.toFixed(2) == ele[0].toFixed(2);} );Supongo que quieres algo en la línea de
Math.abs(point-ele[0]) < 0.01 reemplace 0.01 con un umbral relevante para sus datos, por ejemplo, 1e-6 para 10^(-6)
ToFixed también se redondeará
const toFixed=(num)=>Number(num.toString().match(/^\d+(?:\.\d{0,2})?/));Intenta hacerlo así
return point.toString().substr(0, ele.toString().length) == ele;