Verificarea cifrelor unui număr în JavaScript
Să presupunem că avem numărul:
let num = 12345;
Încercarea de a accesa primul caracter al numărului va duce la un comportament neașteptat:
let num = 12345;
if (num[0] == 1) {
console.log('+++');
} else {
console.log('---'); // acesta se va executa
}
După cum probabil știți deja, problema este că puteți accesa caracterele unui șir de caractere, dar nu și cifrele unui număr:
let num = 12345;
console.log(num[0]); // va afișa undefined
Pentru a rezolva problema, să convertim numărul nostru într-un șir de caractere:
let num = 12345;
let str = String(num);
if (str[0] == 1) {
console.log('+++'); // acesta se va executa
} else {
console.log('---');
}
Nu este necesar să introduceți o nouă variabilă,
puteți aplica [0] direct
rezultatului funcției String:
let num = 12345;
if (String(num)[0] == 1) {
console.log('corect'); // va afișa 'corect'
} else {
console.log('incorect');
}
Să presupunem acum că vrem să verificăm dacă prima cifră
este egală cu 1, sau 2.
Să scriem codul corespunzător:
let num = 12345;
if (String(num)[0] == 1 || String(num)[0] == 2) {
console.log('+++');
} else {
console.log('---');
}
În acest caz, construcția
String(num)[0] se repetă de două ori.
Aceasta este, în primul rând, lungă, iar în al doilea rând, nu este optimă,
deoarece convertim numărul în șir de două ori
- a doua oară este redundant, iar resursele
programului sunt irosite.
Să remediem problema:
let num = 12345;
let first = String(num)[0];
if (first == 1 || first == 2) {
console.log('+++');
} else {
console.log('---');
}
Se dă un număr întreg. Scrieți o condiție care verifică dacă ultima cifră a acestui număr este egală cu zero.
Să presupunem că variabila num stochează un număr.
Determinați dacă numărul este par sau impar. Numărul va fi
par dacă ultimul caracter este egal cu 0,
2, 4, 6 sau 8,
și impar în caz contrar.