Comprobar si una variable u objeto es un entero en JavaScript
Probablemente hayas echado de menos alguna vez en JavaScript una función isInt(), es decir, que le pases una variable y te devuelva verdadero si es entero y falso en caso contrario. Esta comprobación es muy típica en el envío de formularios: edades, componentes de una fecha o cualquier otra cantidad que no puede tener decimales.
Acabo de tener esta necesidad y aquí os traigo la función que hace justo esto:
function esEntero(x){ var y = parseInt(x); if (isNaN(y)) return false; return x == y && x.toString() == y.toString(); }
Aquí tenéis la función y aquí os dejo su correspondiente explicación, odio copiar y pegar código de Internet si no sé perfectamente cuál es el por qué de cada sentencia.
Primero se intenta parsear la variable a entero, parseInt(). Esta función es muy poco estricta y es capaz de convertir cadenas “40 años” al entero 40. Si aún así le es imposible, devuelve NaN y con eso devolvemos directamente falos.
Si ha devuelto un número, tenemos que asegurarnos que es entero. ¿Cómo? Con una doble comprobación extra:
- El número parseado debe ser igual al original
- Y ambos números convertidos en cadena también deben ser iguales
La idea es que todas las cadenas que es capaz de tratar parseInt() pero que no son enteras, se desechen con esta doble comprobación.
¿Útil verdad? La programación en el navegador en el lado del cliente con JavaScript es cada vez más útil gracias a las posibilidades que se nos ofrecen en este entorno, así que os traeré más entradas de este tipo porque yo mismo estoy inmerso en grandes proyectos que requieren de mucho y buen JavaScript.