JavaScript Fundamentals

JavaScript Hashmaps: Objekte vs. das Map-Objekt

Spread the love

JavaScript Hashmaps: Objekte vs. das Map-Objekt

JavaScript hat kein direktes „HashMap“-Äquivalent wie einige andere Sprachen. Wir können jedoch ähnliche Funktionalitäten mit zwei Hauptansätzen erreichen: einfachen JavaScript-Objekten und dem eingebauten Map-Objekt. Dieser Artikel untersucht beide und vergleicht ihre Stärken und Schwächen, um Ihnen bei der Auswahl des besten Ansatzes für Ihre Bedürfnisse zu helfen.

Inhaltsverzeichnis

Objekte als Hashmaps verwenden

JavaScript-Objekte können als einfache Hashmaps fungieren. Sie verwenden String-Schlüssel, um auf zugeordnete Werte zuzugreifen. Dieser Ansatz ist unkompliziert, hat aber Einschränkungen.

Beispiel:


const myHashMap = {}; // Erstellt ein leeres Objekt

// Einfügen von Schlüssel-Wert-Paaren
myHashMap.apple = 1;
myHashMap.banana = 2;
myHashMap.cherry = 3;

// Zugriff auf Werte
console.log(myHashMap.banana); // Ausgabe: 2

// Prüfen, ob ein Schlüssel existiert
console.log('apple' in myHashMap); // Ausgabe: true

// Löschen eines Schlüssel-Wert-Paares
delete myHashMap.banana;

// Iterieren über Schlüssel-Wert-Paare (Hinweis: Reihenfolge ist nicht garantiert)
for (const key in myHashMap) {
  console.log(key, myHashMap[key]);
}

Vorteile:

  • Einfach und vertraut für JavaScript-Entwickler.
  • Keine externen Abhängigkeiten.

Nachteile:

  • Schlüssel sind auf Strings (oder Werte, die implizit in Strings konvertiert werden) beschränkt.
  • Keine integrierte Größeneigenschaft; die Größe muss manuell verfolgt werden.
  • Es fehlen integrierte Methoden wie get, set, has usw.
  • Die Reihenfolge der Schlüssel ist nicht garantiert.

Das Map-Objekt verwenden

Das Map-Objekt (eingeführt in ES6) bietet eine robustere Lösung. Es unterstützt jeden Datentyp als Schlüssel, vermeidet Typumwandlungsprobleme und bietet integrierte Methoden für eine effiziente Manipulation.

Beispiel:


const myMap = new Map();

// Einfügen von Schlüssel-Wert-Paaren
myMap.set("apple", 1);
myMap.set(123, "number"); // Zahl als Schlüssel
myMap.set({ a: 1 }, "object"); // Objekt als Schlüssel

// Zugriff auf Werte
console.log(myMap.get("apple")); // Ausgabe: 1
console.log(myMap.get(123));     // Ausgabe: "number"

// Prüfen, ob ein Schlüssel existiert
console.log(myMap.has("apple")); // Ausgabe: true

// Löschen eines Schlüssel-Wert-Paares
myMap.delete("apple");

// Größe abrufen
console.log(myMap.size); // Ausgabe: 2

// Iterieren über Schlüssel-Wert-Paare (Reihenfolge wird beibehalten)
for (const [key, value] of myMap) {
  console.log(key, value);
}

Vorteile:

  • Unterstützt jeden Datentyp als Schlüssel.
  • Bietet integrierte Methoden (set, get, has, delete, size).
  • Effizientes Iterieren mit for...of-Schleifen.
  • Behält die Einfügereihenfolge bei.

Nachteile:

  • Benötigt ES6-Kompatibilität (obwohl Polyfills verfügbar sind).

Fazit

Während einfache JavaScript-Objekte für einfaches hashmap-artiges Verhalten ausreichen können, wird das Map-Objekt aufgrund seiner überlegenen Funktionen und Effizienz im Allgemeinen empfohlen. Sofern Sie nicht stark durch die Browserkompatibilität eingeschränkt sind, ist Map die bevorzugte Wahl für die meisten modernen JavaScript-Projekte.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert