Estoy validando mi tiempo de esta manera.
if ( timeInMins != 0 && timeInMins != "0" && timeInMins != undefined && timeInMins != "undefined" && timeInMins != null && timeInMins != "" && !isNaN(timeInMins) ) { timeInMinsCumulative += parseFloat(timeInMins); }¿Hay alguna forma de convertir este feo if-check en un código sofisticado?
Esto utiliza el comportamiento de coerción de JavaScript y el operador lógico AND para simplificar su código. Lo siguiente es casi equivalente a su código, pero también protegerá contra los argumentos false y 0n .
if (timeInMins && timeInMins !== '0' && timeInMins !== 'undefined') { // whatever } Preguntas para ti: ¿realmente esperas que te pasen la cadena 'undefined' ? ¿Por qué desea protegerse contra el envío de '0' a parseFloat ? ¿Estás seguro de que parseInt no es lo que quieres?
Hay 6 valores falsos en javascript: undefined , null , NaN , 0 , "" (cadena vacía) y false , por supuesto.
Entonces, puedes escribir
if (timeInMins && timeInMin !== '0') { timeInMinsCumulative += parseFloat(timeInMins); }Parece que desea verificar si timeInMins es un tipo de Number preciso o no.
function isValidNumber(num) { return typeof num === "number" && !isNaN(num); } console.log(isValidNumber("")); console.log(isValidNumber(undefined)); console.log(isValidNumber(NaN)); console.log(isValidNumber("undefined")); console.log(isValidNumber(true)); console.log(isValidNumber(false)); console.log(isValidNumber(0)); console.log(isValidNumber("0")); console.log(isValidNumber(1.234));