Pregunta: ¿Como pasar '27' a 27? (javascript)

Iniciado por Leguim, 13 Septiembre 2020, 22:32 PM

0 Miembros y 1 Visitante están viendo este tema.

Leguim

Estoy teniendo problemas, quiero validar del lado del cliente si un valor ingresado es un numero y si ese numero es un entero pero está este problema.

digamos que el dato es '27' o "27",
las función que uso dirá que esto no es un entero, probé y la función que uso para saber si es un numero si funciona pero para saber si es un entero no funciona.

Código (javascript) [Seleccionar]

var value = '27';

if(!is_NaN(value)) // si es un numero
{
     if(Number.isInteger(value)) // si es un entero (acá me vienen los problemas porque me devuelve false cuando todos sabemos que 27 si es un entero.
     {
              // [...]
     }
}


La solución que se me ocurre es ver si existe una función que convierta el "27" a 27 (int) con javascript.

EdePC

Number.isInteger(value) comprueba que value sea del tipo Integer

Para hacer la conversión de tipos rápida puedes usar:

Código (javascript,5) [Seleccionar]
var value = '27';

if(!is_NaN(value)) // si es un numero
{
      if(Number.isInteger(+value))
      {
               // [...]
      }
}


- Nótese el + delante de value

Leguim

Gracias! En un tema pasado me habían explicado eso del + (creo que fuiste vos) me había olvidado... Gracias!

@XSStringManolo

'27' es un string de tipo primitivo.
"27" es un string de tipo primitivo.
"27".toString() es un string de tipo primitivo que de forma interna se convierte a tipo referenciado con autoboxing. Es decir para aplicarle el método, se convierte en un tipo referenciado/objeto String tal que puedes hacer manualmente con el constructor new String(27);

Esto mismo se aplica a los números. Puedes tener el tipo primitivo 27, el tipo referenciado Number(27), muy similar a +" 27" creado por type cohercion y también tienes el parseInt("27") que tiene algunas diferencias.

Para convertir a número entero, debes definir primero lo que es un numero entero. Porque puede ser un número entero matemáticamente. Puede ser un tipo entero que es una implementación concreta y especifíca de un lenguaje de programación sobre el concepto matemático con un tamaño de bytes predefinido, etc.

También debes considerar como javascript trabaja con objetos para almacenar valores.
Es { numero: 27 } un entero, un entero dentro de un objeto, una propiedad numérica dentro de un objeto?
Es [27] un entero? Es un array? Es un entero dentro de un array?
Es Number(27) un entero? Un objeto? Un entero dentro de un objeto?
Es window.miNumero = 27 un entero? Un objeto? Una propiedad? Una variable?
Es /27/ un entero? Un objeto? Una expresión regular?
Es /d+/ un entero? Un trozo de un entero? Un objeto? Una expresión regular?
Es 27.5212 un entero sin truncar? Un entero sin aproximar? Un flotante?

Concluyendo, qué quieres detectar tú? Porque en base a tus necesidades/objetivos, tu concepción de lo que es un entero, la solución va a diferir.