Skaitļa ciparu pārbaude JavaScript
Pieņemsim, ka mums ir dots skaitlis:
javascriptlet num = 12345;
Mēģinājums piekļūt skaitļa pirmajam simbolam izraisīs negaidītu rezultātu:
javascriptlet num = 12345;
if (num[0] == 1) {
console.log('+++');
} else {
console.log('---'); // izpildīsies šis
}
Kā jau vajadzētu zināt, problēma ir tajā, ka var piekļūt virknes simboliem, bet nevar - skaitļa cipariem:
javascriptlet num = 12345;
console.log(num[0]); // izvadīs undefined
Lai atrisinātu problēmu, pārveidosim mūsu skaitli par virkni:
javascriptlet num = 12345;
let str = String(num);
if (str[0] == 1) {
console.log('+++'); // izpildīsies šis
} else {
console.log('---');
}
Nav obligāti jāievieš jauns mainīgais,
var izmantot [0] tieši
funkcijas String rezultātam:
javascriptlet num = 12345;
if (String(num)[0] == 1) {
console.log('pareizi'); // izvadīs 'pareizi'
} else {
console.log('nepareizi');
}
Pieņemsim, ka mēs vēlamies pārbaudīt, vai pirmais cipars
ir vienāds ar 1 vai 2.
Uzrakstīsim atbilstošo kodu:
javascriptlet num = 12345;
if (String(num)[0] == 1 || String(num)[0] == 2) {
console.log('+++');
} else {
console.log('---');
}
Šajā gadījumā iznāk, ka konstrukcija
String(num)[0] atkārtojas divas reizes.
Tas, pirmkārt, ir garš, un, otrkārt, neoptimāls,
jo mēs divas reizes pārveidojam skaitli par virkni
- otrā reize izrādās lieka, un programmas
resursi tiek tērēti.
Izlabosim problēmu:
javascriptlet num = 12345;
let first = String(num)[0];
if (first == 1 || first == 2) {
console.log('+++');
} else {
console.log('---');
}
Dots vesels skaitlis. Uzrakstiet nosacījumu, kas pārbaudīs, vai šī skaitļa pēdējais cipars ir vienāds ar nulli.
Pieņemsim, ka mainīgajā num ir glabāts skaitlis.
Nosakiet, vai skaitlis ir pāra vai nepāra. Skaitlis būs
pāra, ja pēdējais cipars ir vienāds ar 0,
2, 4, 6 vai 8,
un nepāra pretējā gadījumā.