Arbeiten mit Flags in JavaScript
Jetzt lernen wir, mit Flags zu arbeiten.
Ein Flag ist eine spezielle Variable, die
nur zwei Werte annehmen kann: true
und false. Mit Flags kann man
Aufgaben lösen, die die Abwesenheit von etwas prüfen:
man kann zum Beispiel prüfen, ob in einem Array
kein Element mit einem bestimmten Wert existiert. Lasst uns
beginnen.
Lasst uns die folgende Aufgabe lösen: gegeben ist ein Array
mit Zahlen, es soll geprüft werden, ob darin
ein Element mit dem Wert 3 vorhanden ist oder nicht. Wenn
ja, geben wir '+++' aus, wenn nein -
geben wir '---' aus.
Lasst uns zunächst versuchen, '+++' auszugeben.
Dazu durchlaufen wir alle Elemente unseres Arrays
und fragen mit einer if-Bedingung ab - ist das aktuelle
Element gleich dem Wert 3. Wenn ja, geben wir
'+++' aus:
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
}
}
Aber unsere Lösung ist nicht sehr gut: denn wenn
im Array nicht nur ein Wert 3 vorkommt,
sondern mehrere, dann wird '+++' mehrmals
ausgegeben. Lasst uns unser Array ändern (wir machen
zwei Elemente mit dem Wert 3) und uns davon überzeugen:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // gibt mehrmals aus
}
}
Korrigieren wir das Problem: beenden wir die Schleife mit
break, wenn das Element bereits gefunden wurde:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
break; // beendet die Schleife
}
}
Lasst uns nun versuchen, es so zu machen, dass,
wenn im Array überhaupt keine Elemente mit dem Wert
3 vorhanden sind, '---' ausgegeben wird. Ein verbreiteter
Irrglaube wäre, else zu
unserer if-Bedingung hinzuzufügen - in diesem Fall würde
'---' für alle Elemente ausgegeben werden, die nicht
3 sind:
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // gibt beim Element 3 aus
} else {
console.log('---'); // gibt bei den Elementen 1, 2, 4, 5 aus
}
}
Also, die Idee, else hinzuzufügen - ist eine schlechte
Idee, sie funktioniert nicht. Um Aufgaben dieses
Typs zu lösen (solche Aufgaben kommen häufig
vor) verwendet man sogenannte Flags.
Wie bereits oben erwähnt, ist ein Flag eine
Variable, die zwei Werte annehmen kann:
true oder false.
Also, lasst uns eine Variable flag erstellen
mit folgender Bedeutung: wenn sie true entspricht,
dann gibt es im Array ein Element 3, und wenn
false, dann gibt es ein solches Element nicht.
Anfangs setzen wir die Variable flag
auf den Wert false - das heißt, wir gehen davon aus,
dass das Element 3 im Array nicht vorhanden ist:
let arr = [1, 2, 3, 4, 5];
let flag = false; // wir gehen davon aus, dass das Element 3 nicht im Array ist
Dann starten wir eine Schleife mit einer if-Bedingung, so wie wir das
schon früher gemacht haben. Wenn die Schleife feststellt, dass im Array
ein Element 3 vorhanden ist - dann setzen wir die Variable flag
auf den Wert true und verlassen die Schleife
mit break:
let arr = [1, 2, 3, 4, 5];
let flag = false; // wir gehen davon aus, dass das Element 3 nicht im Array ist
for (let elem of arr) {
if (elem == 3) {
flag = true; // Element ist vorhanden - wir setzen die Variable flag neu
break; // wir verlassen die Schleife
}
}
Die Antwort auf die Frage, ob im Array 3
enthalten ist oder nicht, können wir erst nach der Schleife geben.
Und diese Antwort haben wir bereits: nach der Schleife
konnte die Variable flag false geblieben sein
oder sie konnte ihren Wert auf true geändert haben,
falls die Schleife im Array 3 entdeckt hat:
let arr = [1, 2, 3, 4, 5];
let flag = false;
for (let elem of arr) {
if (elem == 3) {
flag = true;
break;
}
}
// hier ist die Variable flag gleich true oder false
Jetzt können wir nach der Schleife eine if-Bedingung machen, die
sich die Variable flag ansieht und
'+++' oder '---' auf dem Bildschirm ausgibt:
let arr = [1, 2, 3, 4, 5];
let flag = false;
for (let elem of arr) {
if (elem == 3) {
flag = true;
break;
}
}
if (flag === true) {
console.log('+++');
} else {
console.log('---');
}
Gegeben ist ein Array:
let arr = ['a', 'b', 'c', 'd', 'e'];
Prüfen Sie, ob in diesem Array das Element
'c' vorhanden ist.
Wenn ja - geben Sie '+++' aus,
und wenn nein - geben Sie '---' aus.
Schreiben Sie Code, der prüft, ob eine Zahl eine Primzahl ist oder nicht. Eine Primzahl ist nur durch eins und durch sich selbst teilbar, und nicht durch andere Zahlen.