Kontrol af cifre i tal i JavaScript
Lad os sige at vi har følgende tal:
let num = 12345;
Et forsøg på at tilgå det første tegn i tallet vil føre til uventet adfærd:
let num = 12345;
if (num[0] == 1) {
console.log('+++');
} else {
console.log('---'); // dette vil udløses
}
Som du allerede burde vide, er problemet at man kan tilgå tegn i en streng, men ikke - cifre i et tal:
let num = 12345;
console.log(num[0]); // vil udskrive undefined
For at løse problemet konverterer vi vores tal til en streng:
let num = 12345;
let str = String(num);
if (str[0] == 1) {
console.log('+++'); // dette vil udløses
} else {
console.log('---');
}
Det er ikke nødvendigt at introducere en ny variabel,
man kan anvende [0] direkte
på resultatet af funktionen String:
let num = 12345;
if (String(num)[0] == 1) {
console.log('korrekt'); // vil udskrive 'korrekt'
} else {
console.log('forkert');
}
Lad os nu sige at vi vil kontrollere om det første ciffer
er lig med 1, eller 2.
Lad os skrive den tilsvarende kode:
let num = 12345;
if (String(num)[0] == 1 || String(num)[0] == 2) {
console.log('+++');
} else {
console.log('---');
}
I dette tilfælde sker det, at konstruktionen
String(num)[0] gentages to gange.
Dette er for det første langt, og for det andet ikke optimalt,
da vi konverterer tallet til en streng to gange
- anden gang er unødvendig, og programmets ressourcer
bliver brugt på dette.
Lad os rette problemet:
let num = 12345;
let first = String(num)[0];
if (first == 1 || first == 2) {
console.log('+++');
} else {
console.log('---');
}
Givet et heltal. Skriv en betingelse, som kontrollerer om det sidste ciffer i dette tal er lig med nul.
Lad variablen num indeholde et tal.
Bestem om tallet er lige eller ulige. Tallet vil
være lige, hvis det sidste tegn er lig med 0,
2, 4, 6 eller 8,
og ulige i modsat fald.