Categorías: Tutoriales

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:

  1. El número parseado debe ser igual al original
  2. 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.

F. Javier Carazo Gil

Cofundador de CODECTION, empresa especializada en WordPress, autor de un libro sobre WordPress (el primero en español) y multitud de artículos (en medios físicos y virtuales) sobre el tema. Participa en la comunidad WordPress de forma activa siendo parte del equipo organizador de la WordPress Meetup de Córdoba, dando charlas en diferentes WordCamp y siendo autor y coautor de multitud de plugins libres y premium para WordPress de gran éxito.

Ver comentarios

  • Estoy algo espeso, pero yo hubiera tirado también del operador typeof


    if ( typeof x == "number" ) { alert ("al loro, tenemos un número xD"); }

    Aunque asumo que te refieres sobretodo a datos que provienen de inputs por ejemplo, que se considera string hasta que se demuestre lo contrario.

    También se podría tirar de una expresión regular del tipo (aquí mi sintaxis chirría aún más), creo que la expresión a usar sería algo así (falta el código js):


    ^\d*$

    A ver si en un par de cafés escribo mejor.

    Un saludo.

  • Esta también es bastante util, es para comprobar que sea numerico:

    function isNumber(n) {
    return !isNaN(parseFloat(n)) && isFinite(n);
    }

  • @Siot: Buena idea lo del typeof, tendré que probarlo y ver si es más rápido. El problema de las expresiones regulares, es justo ese, la velocidad y en un lenguaje interpretado como JavaScript todavía más.

    @javier: Muchas gracias por la aportación, esto de los lenguajes no tipados tiene este problema... con lo fácil que sería forzar los tipos...

  • muy largo, prefiero verificar si la variable su función constructora es pseudoclase Number.

    function esEntero(a){
    return a.constructor == Number;
    }

  • Tal vez sea algo viejo, pero en mis tiempos "parseInt" tiene o tenía un issue; debes especificar la "base" de conversion, por default, convierte a octal, es decir,:

    parseInt(x, 10)

  • Felicidades. Muy util la funcion. Javascript adolece un poco en las funciones de comprobacion predefinidas.
    Ademas es una funcion muy util para los/las amantes de los falos, ya que como dices: "Si aún así le es imposible, devuelve NaN y con eso devolvemos directamente falos" :))

Entradas recientes

DeepSeek

2 días hace

Contacto

2 semanas hace

Smart-tv mute

2 semanas hace

STEAM OS

3 semanas hace

2025

4 semanas hace

El podcast de Linux Hispano – #072 – El hardware libre debe consolidarse como el software libre

https://www.youtube.com/embed/z-xGk9c_eOw Guionista y locutor: Manuel Ignacio López Quintero.Fecha de publicación: 31 de diciembre de 2024.

1 mes hace