Vérification des chiffres d'un nombre en JavaScript
Supposons que nous ayons le nombre :
let num = 12345;
Tenter d'accéder au premier caractère du nombre conduira à un comportement inattendu :
let num = 12345;
if (num[0] == 1) {
console.log('+++');
} else {
console.log('---'); // c'est cela qui se déclenchera
}
Comme vous devez déjà le savoir, le problème est que l'on peut accéder aux caractères d'une chaîne, mais pas aux chiffres d'un nombre :
let num = 12345;
console.log(num[0]); // affichera undefined
Pour résoudre le problème, convertissons notre nombre en chaîne de caractères :
let num = 12345;
let str = String(num);
if (str[0] == 1) {
console.log('+++'); // c'est cela qui se déclenchera
} else {
console.log('---');
}
Il n'est pas nécessaire d'introduire une nouvelle variable,
on peut appliquer [0] directement
au résultat de la fonction String :
let num = 12345;
if (String(num)[0] == 1) {
console.log('correct'); // affichera 'correct'
} else {
console.log('incorrect');
}
Supposons maintenant que nous voulions vérifier si le premier chiffre
est égal à 1, ou à 2.
Écrivons le code correspondant :
let num = 12345;
if (String(num)[0] == 1 || String(num)[0] == 2) {
console.log('+++');
} else {
console.log('---');
}
Dans ce cas, la construction
String(num)[0] se répète deux fois.
C'est, d'une part, long, et d'autre part, non optimal,
car nous convertissons deux fois le nombre en chaîne
- la seconde fois est superflue, et les ressources
du programme sont gaspillées pour cela.
Corrigeons le problème :
let num = 12345;
let first = String(num)[0];
if (first == 1 || first == 2) {
console.log('+++');
} else {
console.log('---');
}
Soit un nombre entier. Écrivez une condition qui vérifie si le dernier chiffre de ce nombre est égal à zéro.
Supposons que la variable num stocke un nombre.
Déterminez si le nombre est pair ou non. Le nombre sera
pair si le dernier caractère est égal à 0,
2, 4, 6 ou 8,
et impair dans le cas contraire.