STARTBEITRAG
Kleines Beispiel: ['rot', 'blau', 'rot']. In der Schleife mache ich counts.set(wort, 1). Am Ende steht rot trotzdem auf 1. Ich sehe schon, dass ich überschreibe. Nur wo lese ich den bisherigen Stand am besten?
Lernfragen und Praxis · 6 Antworten
STARTBEITRAG
Kleines Beispiel: ['rot', 'blau', 'rot']. In der Schleife mache ich counts.set(wort, 1). Am Ende steht rot trotzdem auf 1. Ich sehe schon, dass ich überschreibe. Nur wo lese ich den bisherigen Stand am besten?
Direkt vor dem Setzen: counts.set(wort, (counts.get(wort) ?? 0) + 1). Ohne bisherigen Eintrag startest du bei null.
Direkt vor dem Setzen: counts.set(wort, (counts.get(wort) ?? 0) + 1). Ohne bisherigen Eintrag startest du bei null.
Das ?? ersetzt also nur den fehlenden Wert? Wenn bereits 0 gespeichert wäre, bleibt die 0 stehen?
Das ?? ersetzt also nur den fehlenden Wert? Wenn bereits 0 gespeichert wäre, bleibt die 0 stehen?
Ja. ?? greift bei null oder undefined. Eine gespeicherte 0 bleibt erhalten. Bei diesem Zähler beginnst du danach durch das + 1 mit dem ersten Vorkommen.
Ja. ?? greift bei null oder undefined. Eine gespeicherte 0 bleibt erhalten. Bei diesem Zähler beginnst du danach durch das + 1 mit dem ersten Vorkommen.
Jetzt ergibt mein Durchlauf rot 1, blau 1, rot 2. Ich hatte versucht den Zähler außerhalb der Map zu halten und damit alle Wörter gemeinsam gezählt.
Zwei sinnvolle Testfälle dazu: leere Eingabe und dreimal dasselbe Wort. Groß- und Kleinschreibung ist eine gesonderte Entscheidung deiner Aufgabe.
Zwei sinnvolle Testfälle dazu: leere Eingabe und dreimal dasselbe Wort. Groß- und Kleinschreibung ist eine gesonderte Entscheidung deiner Aufgabe.
Genau. ROT und rot sind für die Map erstmal zwei Schlüssel. Die Map liest keine Gedanken, leider auch nicht meine guten.