Überprüfung der Ziffern einer Zahl in JavaScript
Nehmen wir an, wir haben eine Zahl:
javascriptlet num = 12345;
Der Versuch, auf das erste Zeichen der Zahl zuzugreifen, führt zu unerwartetem Verhalten:
javascriptlet num = 12345;
if (num[0] == 1) {
console.log('+++');
} else {
console.log('---'); // das wird ausgeführt
}
Wie Sie bereits wissen sollten, liegt das Problem darin, dass man auf die Zeichen eines Strings zugreifen kann, aber nicht auf die Ziffern einer Zahl:
javascriptlet num = 12345;
console.log(num[0]); // gibt undefined aus
Um das Problem zu lösen, wandeln wir unsere Zahl in einen String um:
javascriptlet num = 12345;
let str = String(num);
if (str[0] == 1) {
console.log('+++'); // das wird ausgeführt
} else {
console.log('---');
}
Es ist nicht notwendig, eine neue Variable einzuführen.
Man kann [0] direkt
auf das Ergebnis der Funktion String anwenden:
javascriptlet num = 12345;
if (String(num)[0] == 1) {
console.log('richtig'); // gibt 'richtig' aus
} else {
console.log('falsch');
}
Nehmen wir nun an, wir möchten die erste Ziffer überprüfen,
ob sie gleich 1 oder 2 ist.
Schreiben wir den entsprechenden Code:
javascriptlet num = 12345;
if (String(num)[0] == 1 || String(num)[0] == 2) {
console.log('+++');
} else {
console.log('---');
}
In diesem Fall wiederholt sich die Konstruktion
String(num)[0] zweimal.
Das ist erstens lang und zweitens nicht optimal,
da wir die Zahl zweimal in einen String umwandeln
- das zweite Mal ist überflüssig, und Programmierressourcen
werden dafür aufgewendet.
Korrigieren wir das Problem:
javascriptlet num = 12345;
let first = String(num)[0];
if (first == 1 || first == 2) {
console.log('+++');
} else {
console.log('---');
}
Gegeben sei eine ganze Zahl. Schreiben Sie eine Bedingung, die überprüft, ob die letzte Ziffer dieser Zahl gleich Null ist.
Nehmen wir an, in der Variable num ist eine Zahl gespeichert.
Bestimmen Sie, ob die Zahl gerade oder ungerade ist. Eine Zahl ist
gerade, wenn die letzte Ziffer gleich 0,
2, 4, 6 oder 8 ist,
andernfalls ist sie ungerade.