Kontrole van syfers van 'n getal in JavaScript
Laat ons sê ons het 'n getal:
let num = 12345;
'n Poging om na die eerste karakter van die getal te verwys sal lei tot onverwagte gedrag:
let num = 12345;
if (num[0] == 1) {
console.log('+++');
} else {
console.log('---'); // dit sal aktiveer
}
Soos jy reeds moet weet, die probleem is dat jy na karakters van 'n string kan verwys, maar nie na syfers van 'n getal nie:
let num = 12345;
console.log(num[0]); // sal undefined uitvoer
Om die probleem op te los, laat ons ons getal omskakel na 'n string:
let num = 12345;
let str = String(num);
if (str[0] == 1) {
console.log('+++'); // dit sal aktiveer
} else {
console.log('---');
}
Dit is nie nodig om 'n nuwe veranderlike te skep nie,
jy kan [0] direk toepas
op die resultaat van die String funksie:
let num = 12345;
if (String(num)[0] == 1) {
console.log('waar'); // sal 'waar' uitvoer
} else {
console.log('onwaar');
}
Laat ons nou sê ons wil die eerste syfer kontroleer
of dit gelyk is aan 1, of 2.
Laat ons die ooreenstemmende kode skryf:
let num = 12345;
if (String(num)[0] == 1 || String(num)[0] == 2) {
console.log('+++');
} else {
console.log('---');
}
In hierdie geval blyk dit dat die konstruksie
String(num)[0] twee keer herhaal word.
Dit is, eerstens, lank, en tweedens, nie optimaal nie,
aangesien ons die getal twee keer na 'n string omskakel
- die tweede keer is oorbodig, en die program se
hulpbronne word daaraan bestee.
Laat ons die probleem regstel:
let num = 12345;
let first = String(num)[0];
if (first == 1 || first == 2) {
console.log('+++');
} else {
console.log('---');
}
'n Heelgetal word gegee. Skryf 'n voorwaarde wat sal kontroleer of die laaste syfer van hierdie getal gelyk is aan nul.
Laat in die veranderlike num 'n getal gestoor wees.
Bepaal of die getal ewe of onewe is. Die getal sal
ewe wees as die laaste karakter gelyk is aan 0,
2, 4, 6 of 8,
en onewe andersins.