Signatur
Beschreibung
entries() gibt ein neues Map-Iterator-Objekt zurück. Es liefert für jeden Eintrag der Map ein zweielementiges Array [key, value]. Die Reihenfolge entspricht immer der Einfügereihenfolge. Das unterscheidet Maps von einfachen Objekten, bei denen ganzzahlige Schlüssel vorgezogen werden.
Die Methode ist identisch mit Map.prototype[Symbol.iterator]. Deshalb liefern for (const [k, v] of map) und for (const [k, v] of map.entries()) dasselbe Ergebnis. Ausdrücklich braucht man entries() vor allem, wenn man den Iterator von Hand mit next() weiterschalten möchte oder im Code deutlich machen will, dass man Schlüssel-Wert-Paare verarbeitet.
Typische Einsatzfälle sind: eine Map mit Object.fromEntries() in ein normales Objekt umwandeln, eine Map über den Spread-Operator in ein Array verwandeln (etwa zum Sortieren oder Filtern) oder eine Map kopieren bzw. umbauen.
Der Iterator ist live: Einträge, die während des Durchlaufs hinzukommen, werden noch besucht. Gelöschte Einträge, die noch nicht besucht wurden, werden übersprungen.
Rückgabewert
next() gibt { value: [key, value], done: false } zurück, am Ende { value: undefined, done: true }.Beispiele
Iterator von Hand mit next() weiterschalten
const farben = new Map([
['rot', '#f00'],
['grün', '#0f0'],
]);
const it = farben.entries();
console.log(it.next().value);
console.log(it.next().value);
console.log(it.next().done);
Destrukturierung in for...of
const lagerbestand = new Map([
['Äpfel', 12],
['Birnen', 0],
['Kirschen', 40],
]);
for (const [artikel, menge] of lagerbestand.entries()) {
if (menge === 0) console.log(`${artikel} nachbestellen!`);
}
Map in ein Objekt umwandeln (z. B. für JSON)
const einstellungen = new Map([
['theme', 'dark'],
['sprache', 'de'],
]);
const obj = Object.fromEntries(einstellungen.entries());
console.log(JSON.stringify(obj));
Map nach Wert sortieren
const punkte = new Map([
['Anna', 72],
['Ben', 95],
['Clara', 88],
]);
const sortiert = new Map(
[...punkte.entries()].sort(([, a], [, b]) => b - a)
);
console.log([...sortiert.keys()]);
// Wichtig · Fallstricke
- Der Iterator lässt sich nur einmal durchlaufen. Danach ist er erschöpft und liefert nichts mehr. Für einen weiteren Durchlauf rufen Sie
entries()erneut auf. - Der Rückgabewert ist kein Array. Methoden wie
map()oderfilter()stehen nur über[...map.entries()]bzw.Array.from()zur Verfügung. In neueren Umgebungen gibt es dafür auch Iterator-Hilfsmethoden (ES2025, z. B.map.entries().filter(...)). Diese werden noch nicht überall unterstützt. - Der Iterator ist live: Wenn Sie während des Durchlaufs Einträge hinzufügen, kann eine Endlosschleife entstehen.
entries()gibt dieselbe Funktion zurück wiemap[Symbol.iterator].map.entries()ist also meist überflüssig, wenn Sie direkt mitfor...ofüber die Map laufen.JSON.stringify(map)ergibt{}. Wandeln Sie die Map vorher mitObject.fromEntries(map.entries())um. Das funktioniert aber nur sinnvoll mit String-Schlüsseln.- Wird die Methode auf etwas aufgerufen, das keine Map ist, wirft sie einen
TypeError. Beispiel:Map.prototype.entries.call({}). - Kompatibilität: Die Methode ist seit ES2015 in allen modernen Browsern und in Node.js verfügbar.