Preverjanje števk števila v JavaScript
Recimo, da imamo dano število:
let num = 12345;
Poskus dostopa do prvega znaka števila bo povzročil nepričakovano vedenje:
let num = 12345;
if (num[0] == 1) {
console.log('+++');
} else {
console.log('---'); // sprožilo se bo to
}
Kot že morate vedeti, je težava v tem, da lahko dostopate do znakov niza, ne pa tudi do števk števila:
let num = 12345;
console.log(num[0]); // izpiše undefined
Za rešitev problema pretvorimo naše število v niz:
let num = 12345;
let str = String(num);
if (str[0] == 1) {
console.log('+++'); // sprožilo se bo to
} else {
console.log('---');
}
Ni nujno, da uvedemo novo spremenljivko,
lahko uporabimo [0] neposredno
na rezultatu funkcije String:
let num = 12345;
if (String(num)[0] == 1) {
console.log('pravilno'); // izpiše 'pravilno'
} else {
console.log('nepravilno');
}
Recimo, da zdaj želimo preveriti, ali je prva števka
enaka 1 ali 2.
Napišimo ustrezno kodo:
let num = 12345;
if (String(num)[0] == 1 || String(num)[0] == 2) {
console.log('+++');
} else {
console.log('---');
}
V tem primeru se izkaže, da se konstrukcija
String(num)[0] ponovi dvakrat.
To je, prvič, dolgo, in drugič, ne optimalno,
saj števlo dvakrat pretvarjamo v niz
- drugič se izkaže za odveč, viri
programa pa se porabijo zanj.
Popravimo težavo:
let num = 12345;
let first = String(num)[0];
if (first == 1 || first == 2) {
console.log('+++');
} else {
console.log('---');
}
Dano je celo število. Napišite pogoj, ki bo preveril, ali je zadnja števka tega števila enaka nič.
Naj bo v spremenljivki num shranjeno število.
Določite, ali je število sodo ali ne. Število bo
sodo, če je zadnji znak enak 0,
2, 4, 6 ali 8,
in liho sicer.