Wörter zählen: Warum setzt meine Map den Zähler immer wieder auf eins?

Lernfragen und Praxis · 6 Antworten

STARTBEITRAG

#1

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?

0

Antworten

6
Antwort auf das Thema
#2

Direkt vor dem Setzen: counts.set(wort, (counts.get(wort) ?? 0) + 1). Ohne bisherigen Eintrag startest du bei null.

0
Antwort auf Antwort

Antwort auf #2 von tom_dev

Direkt vor dem Setzen: counts.set(wort, (counts.get(wort) ?? 0) + 1). Ohne bisherigen Eintrag startest du bei null.
#3

Das ?? ersetzt also nur den fehlenden Wert? Wenn bereits 0 gespeichert wäre, bleibt die 0 stehen?

0
Antwort auf Antwort

Antwort auf #3 von lea_lernt

Das ?? ersetzt also nur den fehlenden Wert? Wenn bereits 0 gespeichert wäre, bleibt die 0 stehen?
#4

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.

0
Antwort auf Antwort

Antwort auf #4 von semikolon

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.
#5

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.

0
Antwort auf das Thema
#6

Zwei sinnvolle Testfälle dazu: leere Eingabe und dreimal dasselbe Wort. Groß- und Kleinschreibung ist eine gesonderte Entscheidung deiner Aufgabe.

0
Antwort auf Antwort

Antwort auf #6 von byteweise

Zwei sinnvolle Testfälle dazu: leere Eingabe und dreimal dasselbe Wort. Groß- und Kleinschreibung ist eine gesonderte Entscheidung deiner Aufgabe.
#7

Genau. ROT und rot sind für die Map erstmal zwei Schlüssel. Die Map liest keine Gedanken, leider auch nicht meine guten.

0