Controleren van cijfers van een getal in JavaScript
Stel we hebben het volgende getal:
let num = 12345;
Een poging om toegang te krijgen tot het eerste teken van het getal zal leiden tot onverwacht gedrag:
let num = 12345;
if (num[0] == 1) {
console.log('+++');
} else {
console.log('---'); // dit wordt uitgevoerd
}
Zoals je al zou moeten weten, is het probleem dat je toegang kunt krijgen tot tekens van een string, maar niet tot cijfers van een getal:
let num = 12345;
console.log(num[0]); // geeft undefined weer
Om het probleem op te lossen, converteren we ons getal naar een string:
let num = 12345;
let str = String(num);
if (str[0] == 1) {
console.log('+++'); // dit wordt uitgevoerd
} else {
console.log('---');
}
Het is niet nodig om een nieuwe variabele te introduceren,
je kunt [0] direct
toepassen op het resultaat van de functie String:
let num = 12345;
if (String(num)[0] == 1) {
console.log('juist'); // geeft 'juist' weer
} else {
console.log('onjuist');
}
Stel dat we nu het eerste cijfer willen controleren
of het gelijk is aan 1, of 2.
Laten we de bijbehorende code schrijven:
let num = 12345;
if (String(num)[0] == 1 || String(num)[0] == 2) {
console.log('+++');
} else {
console.log('---');
}
In dit geval blijkt de constructie
String(num)[0] twee keer voor te komen.
Dit is, ten eerste, lang, en ten tweede, niet optimaal,
omdat we twee keer het getal naar een string converteren
- de tweede keer is overbodig, en programma middelen
worden hieraan verspild.
Laten we het probleem oplossen:
let num = 12345;
let first = String(num)[0];
if (first == 1 || first == 2) {
console.log('+++');
} else {
console.log('---');
}
Gegeven een geheel getal. Schrijf een voorwaarde die controleert of het laatste cijfer van dit getal gelijk is aan nul.
Stel in variabele num is een getal opgeslagen.
Bepaal of het getal even of oneven is. Het getal is
even als het laatste teken gelijk is aan 0,
2, 4, 6 of 8,
en oneven in andere gevallen.