Verificação de dígitos de um número em JavaScript
Suponha que temos o número:
let num = 12345;
Tentar acessar o primeiro caractere do número levará a um comportamento inesperado:
let num = 12345;
if (num[0] == 1) {
console.log('+++');
} else {
console.log('---'); // isto será executado
}
Como você já deve saber, o problema é que podemos acessar caracteres de uma string, mas não podemos acessar dígitos de um número:
let num = 12345;
console.log(num[0]); // exibirá undefined
Para resolver o problema, vamos converter nosso número em uma string:
let num = 12345;
let str = String(num);
if (str[0] == 1) {
console.log('+++'); // isto será executado
} else {
console.log('---');
}
Não é necessário criar uma nova variável,
podemos aplicar [0] diretamente
ao resultado da função String:
let num = 12345;
if (String(num)[0] == 1) {
console.log('correto'); // exibirá 'correto'
} else {
console.log('incorreto');
}
Suponha agora que queremos verificar se o primeiro dígito
é igual a 1 ou 2.
Vamos escrever o código correspondente:
let num = 12345;
if (String(num)[0] == 1 || String(num)[0] == 2) {
console.log('+++');
} else {
console.log('---');
}
Neste caso, a construção
String(num)[0] se repete duas vezes.
Isso é, primeiro, longo e, segundo, não é ideal,
pois convertemos o número em string duas vezes
- a segunda vez é redundante, e os recursos
do programa são gastos com isso.
Vamos corrigir o problema:
let num = 12345;
let first = String(num)[0];
if (first == 1 || first == 2) {
console.log('+++');
} else {
console.log('---');
}
Dado um número inteiro. Escreva uma condição que verifique se o último dígito deste número é igual a zero.
Suponha que a variável num armazene um número.
Determine se o número é par ou ímpar. O número será
par se o último caractere for igual a 0,
2, 4, 6 ou 8,
e ímpar caso contrário.