Sprawdzanie cyfr liczby w JavaScript
Załóżmy, że mamy daną liczbę:
let num = 12345;
Próba odwołania się do pierwszego znaku liczby doprowadzi do nieoczekiwanego zachowania:
let num = 12345;
if (num[0] == 1) {
console.log('+++');
} else {
console.log('---'); // zadziała to
}
Jak już powinieneś wiedzieć, problem polega na tym, że można odwoływać się do znaków ciągu znaków, ale nie można - do cyfr liczby:
let num = 12345;
console.log(num[0]); // wypisze undefined
Aby rozwiązać problem, przekształćmy naszą liczbę na ciąg znaków:
let num = 12345;
let str = String(num);
if (str[0] == 1) {
console.log('+++'); // zadziała to
} else {
console.log('---');
}
Nie jest konieczne wprowadzanie nowej zmiennej,
można zastosować [0] bezpośrednio
do wyniku funkcji String:
let num = 12345;
if (String(num)[0] == 1) {
console.log('prawda'); // wypisze 'prawda'
} else {
console.log('nieprawda');
}
Załóżmy teraz, że chcemy sprawdzić, czy pierwsza cyfra
jest równa 1, albo 2.
Napiszmy odpowiedni kod:
let num = 12345;
if (String(num)[0] == 1 || String(num)[0] == 2) {
console.log('+++');
} else {
console.log('---');
}
W tym przypadku okazuje się, że konstrukcja
String(num)[0] powtórzy się dwa razy.
Jest to, po pierwsze, długie, a po drugie, nieoptymalne,
ponieważ dwa razy przekształcamy liczbę na ciąg znaków
- drugi raz okazuje się zbędny, a zasoby
programu są na to marnowane.
Naprawmy problem:
let num = 12345;
let first = String(num)[0];
if (first == 1 || first == 2) {
console.log('+++');
} else {
console.log('---');
}
Dana jest liczba całkowita. Napisz warunek, który sprawdzi, czy ostatnia cyfra tej liczby jest równa zero.
Załóżmy, że w zmiennej num przechowywana jest liczba.
Określ, czy liczba jest parzysta, czy nie. Liczba będzie
parzysta, jeśli ostatni znak jest równy 0,
2, 4, 6 lub 8,
i nieparzysta w przeciwnym przypadku.