Map.prototype.getOrInsertComputed()
Baseline 2026>
Neu verfügbar
Seit Februar 2026 funktioniert diese Funktion auf aktuellen Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.
Die Methode getOrInsertComputed() von Map-Instanzen gibt den Wert zurück, der dem angegebenen Schlüssel in dieser Map zugeordnet ist. Ist der Schlüssel nicht vorhanden, fügt sie einen neuen Eintrag mit diesem Schlüssel und einem Standardwert hinzu, der durch eine übergebene Callback-Funktion berechnet wird, und gibt den eingefügten Wert zurück.
Verwenden Sie diese Methode anstelle von Map.prototype.getOrInsert(), wenn die Berechnung des Standardwerts aufwendig ist und Sie sie nur bei Bedarf durchführen möchten.
Probieren Sie es aus
const map = new Map([["bar", "foo"]]);
const defaultCreator = (key) => `default for ${key}`;
console.log(map.getOrInsertComputed("bar", defaultCreator));
// Expected output: "foo"
console.log(map.getOrInsertComputed("baz", defaultCreator));
// Expected output: "default for baz"
Syntax
getOrInsertComputed(key, callback)
Parameter
key-
Der Schlüssel des Elements, das aus dem
Map-Objekt zurückgegeben werden soll. Objektschlüssel werden anhand ihrer Referenz verglichen, nicht anhand ihres Werts. callback-
Eine Funktion, die den Wert zurückgibt, der eingefügt und zurückgegeben werden soll, wenn der Schlüssel noch nicht im
Map-Objekt vorhanden ist. Die Funktion wird mit dem folgenden Argument aufgerufen:key-
Derselbe Schlüssel, der an
getOrInsertComputed()übergeben wurde.
Rückgabewert
Der Wert, der dem angegebenen Schlüssel im Map-Objekt zugeordnet ist. Wird der Schlüssel nicht gefunden, wird das Ergebnis von callback(key) eingefügt und zurückgegeben.
Ausnahmen
TypeError-
Wird ausgelöst, wenn
callbacknicht aufrufbar ist.
Beispiele
>Unnötige Berechnung des Standardwerts vermeiden
Bei Verwendung von Map.prototype.getOrInsert() wird der Standardwert jedes Mal berechnet, auch wenn er nicht benötigt wird. Mit getOrInsertComputed() wird der Standardwert nur bei Bedarf berechnet.
const map = new Map([["bar", "foo"]]);
const defaultCreator = (key) => {
console.log(`Creating default for ${key}`);
return `default for ${key}`;
};
map.getOrInsert("bar", defaultCreator("bar")); // Logs "Creating default for bar"
map.getOrInsertComputed("bar", defaultCreator); // No log
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-map.prototype.getorinsertcomputed> |