Kontrola číslic čísla v JavaScriptu

Předpokládejme, že máme číslo:

javascriptlet num = 12345;

Pokus o přístup k prvnímu znaku čísla povede k neočekávanému chování:

javascriptlet 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:

javascriptlet num = 12345;
console.log(num[0]); // vypíše undefined

Pro vyřešení problému převedeme naše číslo na řetězec:

javascriptlet 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:

javascriptlet 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:

javascriptlet 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:

javascriptlet num = 12345;
let first = String(num)[0];

if (first == 1 || first == 2) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 1

Je dáno celé číslo. Napište podmínku, která zkontroluje, zda je poslední číslice tohoto čísla rovna nule.

Задание 2

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ě.