He registrado muchas formas de juzgar un tipo de número en JavaScript. Este artículo muestra cómo determinar un tipo entero (entero).
En JavaScript, los enteros y los números de punto flotante no se distinguen. Todos los números están representados en formato de punto flotante de 64 bits, lo mismo que el tipo doble de Java. Pero en las operaciones reales, como la indexación de matrices y las operaciones de bits, se basan en enteros de 32 bits.
Método 1: use el operador restante para juzgar
Cualquier número entero será divisible por 1, es decir, el resto es 0. Use esta regla para determinar si es un entero.
La copia del código es la siguiente:
función isinteger (obj) {
devolver obj%1 === 0
}
ISInteger (3) // Verdadero
isInteger (3.3) // falso
La salida anterior muestra que esta función es muy útil, pero parece ser incompetente para cadenas y algunos valores especiales.
La copia del código es la siguiente:
isInteger ('' ') // Verdadero
isInteger ('3') // Verdadero
isInteger (verdadero) // verdadero
isInteger ([]) // verdadero
Es realmente difícil aceptar que las cadenas vacías, los números de tipo de cadena, las matrices booleanas y las matrices vacías vuelvan verdaderas. Si está interesado en los detalles de estos tipos de conversión interna, consulte: Valores falsos extraños en JavaScript
Por lo tanto, primero debe determinar si el objeto es un número, como agregar un tipo de
La copia del código es la siguiente:
función isinteger (obj) {
return typeOf obj === 'Número' && obj%1 === 0
}
isInteger ('' ') // falso
isInteger ('3') // falso
isInteger (verdadero) // falso
isInteger ([]) // falso
Bueno, esto es más perfecto.
2. Use Math.round, Math.ceil y Math.floor para hacer juicios
El entero todavía es igual a ti mismo. Use esta función para determinar si es un entero. El ejemplo de Math.Floor es el siguiente
La copia del código es la siguiente:
función isinteger (obj) {
return math.floor (obj) === obj
}
ISInteger (3) // Verdadero
isInteger (3.3) // falso
isInteger ('' ') // falso
isInteger ('3') // falso
isInteger (verdadero) // falso
isInteger ([]) // falso
Esto bloquea directamente la cadena, verdadera, [], y la cantidad de código es menor que la función anterior.
3. Juicio a través de Parseint
La copia del código es la siguiente:
función isinteger (obj) {
return parseint (obj, 10) === obj
}
ISInteger (3) // Verdadero
isInteger (3.3) // falso
isInteger ('' ') // falso
isInteger ('3') // falso
isInteger (verdadero) // falso
isInteger ([]) // falso
Muy bueno, pero también tiene una desventaja
La copia del código es la siguiente:
ISInteger (1000000000000000000000000) // FALSO
En realidad volvió falso, no era razonable. La razón es que la parseint obliga al primer parámetro a analizarse en una cadena antes de analizar el entero. Este método de convertir números en enteros no es una buena opción.
4. Juicio a través de operaciones de bits
La copia del código es la siguiente:
función isinteger (obj) {
return (obj | 0) === obj
}
ISInteger (3) // Verdadero
isInteger (3.3) // falso
isInteger ('' ') // falso
isInteger ('3') // falso
isInteger (verdadero) // falso
isInteger ([]) // falso
Esta función es muy buena y tiene alta eficiencia. Pero hay un defecto. Como se mencionó anteriormente, las operaciones de bit solo pueden procesar números dentro de 32 bits, y son impotentes para hacer más de 32 bits, como
La copia del código es la siguiente:
isInteger (Math.Pow (2, 32)) // Los números por encima de 32 dígitos han devuelto falso
Por supuesto, la mayoría de las veces no usamos un número tan grande.
5. Es6 proporciona número .isintager
La copia del código es la siguiente:
Número.isinteger (3) // Verdadero
Número.isinteger (3.1) // falso
Número.isinteger ('') // falso
Número.isinteger ('3') // falso
Número.isinteger (true) // falso
Número.isinteger ([]) // falso
Actualmente, los últimos Firefox y Chrome ya son compatibles.