Kontrollimi i shifrave të një numri në JavaScript

Le të kemi një numër:

javascriptlet num = 12345;

Përpjekja për t'iu referuar karakterit të parë të numrit do të çojë në sjellje të papritur:

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

javascriptlet num = 12345;
console.log(num[0]); // do të shfaqë undefined

Për të zgjidhur problemin, le ta transformojmë numrin tonë në varg:

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

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

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

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

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

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

Задание 2

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.