Eu registrei muitas maneiras de julgar um tipo de número em JavaScript. Este artigo mostra como determinar um tipo inteiro (número inteiro).
Em JavaScript, números inteiros e pontos flutuantes não são distinguidos. Todos os números são representados em formato de ponto flutuante de 64 bits, o mesmo que o tipo duplo de Java. Mas nas operações reais, como indexação de matrizes e operações de bits, são baseadas em números inteiros de 32 bits.
Método 1: use o operador restante para julgar
Qualquer número inteiro será divisível por 1, ou seja, o restante é 0. Use esta regra para determinar se é um número inteiro.
A cópia do código é a seguinte:
função isinteger (obj) {
retornar obj%1 === 0
}
isinteger (3) // true
isinteger (3.3) // false
A saída acima mostra que essa função é muito útil, mas parece ser incompetente para strings e alguns valores especiais.
A cópia do código é a seguinte:
isinteger ('') // true
isinteger ('3') // true
isinteger (true) // true
isinteger ([]) // true
É realmente difícil aceitar aquelas cordas vazias, números de tipo de string, verdadeiros booleanos e matrizes vazias, todos retornam true. Se você estiver interessado nos detalhes desses tipos de conversão interna, consulte: Valores falsos estranhos em JavaScript
Portanto, você precisa primeiro determinar se o objeto é um número, como adicionar um tipo de
A cópia do código é a seguinte:
função isinteger (obj) {
Retornar tipo de obj === 'número' && obj%1 === 0
}
isinteger ('') // false
isinteger ('3') // false
isinteger (verdadeiro) // false
isinteger ([]) // false
Bem, isso é mais perfeito.
2. Use Math.Round, Math.Ceil e Math.Floor para fazer julgamentos
O número inteiro ainda é igual a si mesmo. Use esse recurso para determinar se é um número inteiro. O exemplo do piso matemáticos é o seguinte
A cópia do código é a seguinte:
função isinteger (obj) {
retornar math.floor (obj) === Obj
}
isinteger (3) // true
isinteger (3.3) // false
isinteger ('') // false
isinteger ('3') // false
isinteger (verdadeiro) // false
isinteger ([]) // false
Isso bloqueia diretamente a string, true, [], e a quantidade de código é menor que a função anterior.
3. Julgamento através da Parseint
A cópia do código é a seguinte:
função isinteger (obj) {
Retornar Parseint (OBJ, 10) === OBJ
}
isinteger (3) // true
isinteger (3.3) // false
isinteger ('') // false
isinteger ('3') // false
isinteger (verdadeiro) // false
isinteger ([]) // false
Muito bom, mas também tem uma desvantagem
A cópia do código é a seguinte:
ISINTEGER (10000000000000000000000) // FALSO
Na verdade, retornou falso, não era razoável. O motivo é que o parseint força o primeiro parâmetro a ser analisado em uma string antes de analisar o número inteiro. Esse método de converter números em números inteiros não é uma boa escolha.
4. Julgamento através de operações de bits
A cópia do código é a seguinte:
função isinteger (obj) {
retornar (obj | 0) === obj
}
isinteger (3) // true
isinteger (3.3) // false
isinteger ('') // false
isinteger ('3') // false
isinteger (verdadeiro) // false
isinteger ([]) // false
Esta função é muito boa e tem alta eficiência. Mas há uma falha. Como mencionado acima, as operações de bits só podem processar números dentro de 32 bits, e eles são impotentes para fazer algo mais que 32 bits, como
A cópia do código é a seguinte:
isinteger (Math.pow (2, 32)) // Os números acima de 32 dígitos retornaram falsos
Obviamente, na maioria das vezes não usamos um número tão grande.
5. ES6 fornece número.Isinteger
A cópia do código é a seguinte:
Número.isinteger (3) // true
Número.isinteger (3.1) // false
Número.isinteger ('') // false
Número.isinteger ('3') // false
Número.isinteger (true) // false
Número.isinteger ([]) // false
Atualmente, o mais recente Firefox e Chrome já são suportados.