Sjekk av sifre i et tall i JavaScript
La oss si at vi har et tall:
javascriptlet num = 12345;
Et forsøk på å få tilgang til det første tegnet i tallet vil føre til uventet oppførsel:
javascriptlet num = 12345;
if (num[0] == 1) {
console.log('+++');
} else {
console.log('---'); // dette vil utløses
}
Som du allerede burde vite, er problemet at man kan få tilgang til tegn i en streng, men ikke til sifre i et tall:
javascriptlet num = 12345;
console.log(num[0]); // vil skrive ut undefined
For å løse problemet, konverterer vi tallet vårt til en streng:
javascriptlet num = 12345;
let str = String(num);
if (str[0] == 1) {
console.log('+++'); // dette vil utløses
} else {
console.log('---');
}
Det er ikke nødvendig å innføre en ny variabel,
man kan bruke [0] direkte
på resultatet av funksjonen String:
javascriptlet num = 12345;
if (String(num)[0] == 1) {
console.log('riktig'); // vil skrive ut 'riktig'
} else {
console.log('feil');
}
La oss nå si at vi vil sjekke om det første sifferet
er lik 1, eller 2.
La oss skrive den tilsvarende koden:
javascriptlet num = 12345;
if (String(num)[0] == 1 || String(num)[0] == 2) {
console.log('+++');
} else {
console.log('---');
}
I dette tilfellet blir det slik at konstruksjonen
String(num)[0] gjentas to ganger.
Dette er for det første langt, og for det andre ikke optimalt,
siden vi konverterer tallet til en streng to ganger
- den andre gangen blir unødvendig, og programmets
resurser brukes på dette.
La oss rette opp problemet:
javascriptlet num = 12345;
let first = String(num)[0];
if (first == 1 || first == 2) {
console.log('+++');
} else {
console.log('---');
}
Det gis et heltall. Skriv en betingelse som sjekker om det siste sifferet i dette tallet er lik null.
La variabelen num inneholde et tall.
Avgjør om tallet er partall eller oddetall. Tallet vil
være partall hvis det siste tegnet er lik 0,
2, 4, 6 eller 8,
og oddetall ellers.