Kontrola číslic čísla v JavaScriptu
Předpokládejme, že máme číslo:
let num = 12345;
Pokus o přístup k prvnímu znaku čísla povede k neočekávanému chování:
let num = 12345;
if (num[0] == 1) {
console.log('+++');
} else {
console.log('---'); // provede se toto
}
Jak již víte, problém je v tom, že lze přistupovat ke znakům řetězce, ale nelze - k číslicím čísla:
let num = 12345;
console.log(num[0]); // vypíše undefined
Pro vyřešení problému převedeme naše číslo na řetězec:
let num = 12345;
let str = String(num);
if (str[0] == 1) {
console.log('+++'); // provede se toto
} else {
console.log('---');
}
Není nutné zavádět novou proměnnou,
lze aplikovat [0] přímo
k výsledku funkce String:
let num = 12345;
if (String(num)[0] == 1) {
console.log('správně'); // vypíše 'správně'
} else {
console.log('nesprávně');
}
Předpokládejme nyní, že chceme zkontrolovat první číslici
na to, že je rovna 1, nebo 2.
Napišme odpovídající kód:
let num = 12345;
if (String(num)[0] == 1 || String(num)[0] == 2) {
console.log('+++');
} else {
console.log('---');
}
V tomto případě se stane, že konstrukce
String(num)[0] se zopakuje dvakrát.
To je jednak dlouhé, a jednak ne optimální,
protože dvakrát převádíme číslo na řetězec
- druhýkrát je to zbytečné, a zdroje
programu na to jsou vynakládány.
Opravme problém:
let num = 12345;
let first = String(num)[0];
if (first == 1 || first == 2) {
console.log('+++');
} else {
console.log('---');
}
Je dáno celé číslo. Napište podmínku, která zkontroluje, zda je poslední číslice tohoto čísla rovna nule.
Předpokládejme, že v proměnné num je uloženo číslo.
Určete, zda je číslo sudé nebo liché. Číslo bude
sudé, pokud je poslední znak roven 0,
2, 4, 6 nebo 8,
a liché v opačném případě.