Kontrollimi i shifrave të një numri në JavaScript
Le të kemi një numër:
let num = 12345;
Përpjekja për t'iu referuar karakterit të parë të numrit do të çojë në sjellje të papritur:
let num = 12345;
if (num[0] == 1) {
console.log('+++');
} else {
console.log('---'); // kjo do të ekzekutohet
}
Siç duhet ta dini tashmë, problemi është se mund të referoheni karaktereve të një vargu, por jo shifrave të një numri:
let num = 12345;
console.log(num[0]); // do të shfaqë undefined
Për të zgjidhur problemin, le ta transformojmë numrin tonë në varg:
let num = 12345;
let str = String(num);
if (str[0] == 1) {
console.log('+++'); // kjo do të ekzekutohet
} else {
console.log('---');
}
Nuk është e detyrueshme të futet një ndryshore e re,
mund të përdorni [0] direkt
te rezultati i funksionit String:
let num = 12345;
if (String(num)[0] == 1) {
console.log('saktë'); // do të shfaqë 'saktë'
} else {
console.log('jo saktë');
}
Le të themi tani që duam të kontrollojmë nëse shifra e parë
është e barabartë me 1, ose 2.
Le të shkruajmë kodin përkatës:
let num = 12345;
if (String(num)[0] == 1 || String(num)[0] == 2) {
console.log('+++');
} else {
console.log('---');
}
Në këtë rast, ndodh që konstruksioni
String(num)[0] përsëritet dy herë.
Kjo, së pari, është e gjatë, dhe së dyti, jo optimale,
pasi ne e transformojmë numrin në varg dy herë
- hera e dëytë është e tepërt, dhe burimet
e programit harxhohen për këtë.
Le të rregullojmë problemin:
let num = 12345;
let first = String(num)[0];
if (first == 1 || first == 2) {
console.log('+++');
} else {
console.log('---');
}
Është dhënë një numër i plotë. Shkruani një kusht që kontrollon nëse shifra e fundit e këtij numri është e barabartë me zero.
Le të themi se në variablin num ruhet një numër.
Përcaktoni nëse numri është çift apo tek. Numri do të
jetë çift nëse shifra e fundit është e barabartë me 0,
2, 4, 6 ose 8,
dhe tek në rastin e kundërt.