Kontroll av siffror i ett nummer i JavaScript

Låt oss säga att vi har ett nummer:

javascriptlet num = 12345;

Ett försök att komma åt den första siffran i numret kommer att leda till oväntat beteende:

javascriptlet num = 12345;

if (num[0] == 1) {
  console.log('+++');
} else {
  console.log('---'); // detta kommer att triggas
}

Som du redan borde veta, problemet är att man kan komma åt tecken i en sträng, men inte - siffror i ett nummer:

javascriptlet num = 12345;
console.log(num[0]); // kommer att skriva ut undefined

För att lösa problemet omvandlar vi vårt nummer till en sträng:

javascriptlet num = 12345;
let str = String(num);

if (str[0] == 1) {
  console.log('+++'); // detta kommer att triggas
} else {
  console.log('---');
}

Det är inte nödvändigt att introducera en ny variabel, man kan applicera [0] direkt på resultatet av funktionen String:

javascriptlet num = 12345;

if (String(num)[0] == 1) {
  console.log('korrekt'); // kommer att skriva ut 'korrekt'
} else {
  console.log('inkorrekt');
}

Låt oss nu säga att vi vill kontrollera den första siffran för att se om den är lika med 1, eller 2. Låt oss skriva motsvarande kod:

javascriptlet num = 12345;

if (String(num)[0] == 1 || String(num)[0] == 2) {
  console.log('+++');
} else {
  console.log('---');
}

I det här fallet blir det så att konstruktionen String(num)[0] upprepas två gånger. Detta är, för det första, långt, och för det andra, inte optimalt, eftersom vi omvandlar numret till en sträng två gånger - den andra gången blir onödig, och programmets resurser slösas på detta.

Låt oss åtgärda problemet:

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

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

Ett heltal är givet. Skriv ett villkor som kontrollerar om den sista siffran i detta nummer är lika med noll.

Задание 2

Låt variabeln num innehålla ett nummer. Bestäm om numret är jämnt eller inte. Numret kommer att varas jämnt om den sista siffran är lika med 0, 2, 4, 6 eller 8, och udda annars.