Kontroll av siffror i ett nummer i JavaScript
Låt oss säga att vi har ett nummer:
let num = 12345;
Ett försök att komma åt den första siffran i numret kommer att leda till oväntat beteende:
let 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:
let 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:
let 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:
let 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:
let 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:
let num = 12345;
let first = String(num)[0];
if (first == 1 || first == 2) {
console.log('+++');
} else {
console.log('---');
}
Ett heltal är givet. Skriv ett villkor som kontrollerar om den sista siffran i detta nummer är lika med noll.
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.