Kontrol af cifre i tal i JavaScript
Lad os sige at vi har følgende tal:
javascriptlet num = 12345;
Et forsøg på at tilgå det første tegn i tallet vil føre til uventet adfærd:
javascriptlet 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:
javascriptlet num = 12345;
console.log(num[0]); // vil udskrive undefined
For at løse problemet konverterer vi vores tal til en streng:
javascriptlet 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:
javascriptlet 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:
javascriptlet 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:
javascriptlet 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.