- Dynamic Sidebar mit window.COURSES_MANIFEST für 13 Kurse (216 Kapitel) - Kurswechsler Dropdown mit Direktnavigation - Fortschrittsanzeige mit Solved-Checkmarks (✓) aus localStorage - Responsive Off-Canvas Drawer mit Floating Action Button (☰ Kapitel) & Backdrop auf Mobile/Tablets - Web-IDE Topbar Drawer-Button (☰ Kapitel) für unterbrechungsfreien Vollbild-Editor - Saubere Bereinigung redundanter statischer Legacy-Sidebars |
||
|---|---|---|
| .. | ||
| aufgabe.js | ||
| index.html | ||
| musterloesung.js | ||
| README.md | ||
| test_aufgabe.js | ||
JS 04: Arrays, Sets & Maps 📊
Willkommen zu Modul 04 des JavaScript-Kurses!
In modernen Web-Anwendungen sind saubere Datenstrukturen das A und O. JavaScript stellt dir drei mächtige Sammlungen zur Verfügung:
- Arrays: Geordnete, indexierte Listen mit funktionalen Methoden wie
.map(),.filter(),.reduce(). - Sets: Sammlungen einzigartiger Werte – doppelte Einträge werden automatisch eliminiert.
- Maps: Flexible Schlüssel-Wert-Speicher, die im Gegensatz zu normalen Objekten jeden Datentyp als Schlüssel erlauben.
💡 1. Das Wichtigste in Kürze
A. Funktionale Array-Methoden (ES6+)
Statt schwerfälliger for-Schleifen transformieren wir Arrays deklarativ und ohne Seiteneffekte:
const zahlen = [1, 2, 3, 4, 5];
// 🎯 1. .map(): Jedes Element eins-zu-eins transformieren
const verdoppelt = zahlen.map(x => x * 2); // [2, 4, 6, 8, 10]
// 🎯 2. .filter(): Elemente nach einer Bedingung filtern
const gerade = zahlen.filter(x => x % 2 === 0); // [2, 4]
// 🎯 3. .reduce(): Das gesamte Array zu einem Einzelwert aggregieren
const summe = zahlen.reduce((akkumulator, aktuellerWert) => akkumulator + aktuellerWert, 0); // 15
B. Sets: Mengen ohne Duplikate
Ein Set speichert ausschließlich eindeutige Werte. Versuche, denselben Wert mehrfach hinzuzufügen, werden ignoriert:
// Set erstellen:
const farben = new Set(["rot", "gruen", "rot", "blau"]);
console.log(farben.size); // 3 (da "rot" nur 1x gezählt wird)
// Werte hinzufügen & prüfen:
farben.add("gelb");
console.log(farben.has("rot")); // true (extrem schnelle O(1) Prüfung!)
farben.delete("blau");
// 🌟 Duplikate aus einem Array in 1 Zeile entfernen:
const mitDuplikaten = [1, 2, 2, 3, 3, 3, 4];
const ohneDuplikate = [...new Set(mitDuplikaten)]; // [1, 2, 3, 4]
C. Maps: Schlüssel-Wert-Speicher (Key-Value)
Eine Map speichert Schlüssel-Wert-Paare in Einfügereihenfolge. Im Gegensatz zu einfachen {} Objekten darf ein Schlüssel in einer Map jeder beliebige Typ sein (auch Objekte, Zahlen oder Booleans):
// Map instanziieren:
const benutzerStatus = new Map();
// Einträge setzen & abrufen:
benutzerStatus.set("user_101", { online: true, rolle: "Admin" });
benutzerStatus.set("user_102", { online: false, rolle: "Gast" });
console.log(benutzerStatus.get("user_101")); // { online: true, rolle: "Admin" }
console.log(benutzerStatus.has("user_999")); // false
console.log(benutzerStatus.size); // 2
// Aus 2D-Array initialisieren:
const uebersetzung = new Map([
["de", "Guten Tag"],
["en", "Good day"],
["fr", "Bonjour"]
]);
console.log(uebersetzung.get("en")); // "Good day"
🎭 Die didaktische Analogie: "Fotogalerie, VIP-Club & Telefonbuch"
-
📸 Das Array (Die Fotogalerie):
Wie ein Fotoalbum: Jedes Foto liegt an einer festen Position (index 0, 1, 2...). Du kannst dasselbe Bild mehrfach einkleben. Mit Filtern legst du Schablonen über alle Bilder. -
🎟️ Das Set (Der VIP-Club):
Der Türsteher führt eine Gästeliste. Niemand kommt doppelt auf die Liste. Wenn jemand bereits drin ist (set.has("Max")), wird ein zweiter Einlassversuch ignoriert. -
📖 Die Map (Das schlaue Telefonbuch):
Zu jedem Namen (Schlüssel) gibt es den passenden Eintrag (Wert). Du schlägst blitzschnell den Namen nach (map.get("Anna")) und erhältst direkt die hinterlegte Information.
🎯 Aufgaben & Teilziele in aufgabe.js
-
TODO 1:
verdoppeln(zahlen)
Gibt ein neues Array zurück, in dem alle Zahlen mit.map()verdoppelt wurden. -
TODO 2:
filterGeradeZahlen(zahlen)
Filtert mit.filter()nur die geraden Zahlen heraus. -
TODO 3:
arraySumme(zahlen)
Berechnet die Summe aller Array-Elemente mit.reduce()(Standardwert0). -
TODO 4:
entferneDuplikate(liste)
Eliminiert alle Duplikate aus dem übergebenen Array mithilfe vonnew Set()und gibt ein bereinigtes Array zurück. -
TODO 5:
erstelleWoerterbuch(paare)
Erzeugt eine neue JavaScriptMapaus dem übergebenen 2D-Array von Schlüssel-Wert-Paaren ([[k, v], ...]). -
TODO 6:
zaehleHaeufigkeiten(woerter)
Zählt die Häufigkeit jedes Wortes im Array und gibt eineMapzurück, die jedes Wort auf seine Anzahl abbildet.
🧪 Tests ausführen
Öffne die Web-IDE oder führe die Tests aus:
# Im Browser:
workspace.html?course=javascript&track=track_1_grundlagen&chapter=04_arrays_sets_und_maps