Map.prototype.getOrInsertComputed()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Die getOrInsertComputed()-Methode von Map-Instanzen gibt den Wert zurück, der dem angegebenen Schlüssel in dieser Map entspricht. Ist der Schlüssel nicht vorhanden, wird ein neuer Eintrag mit dem Schlüssel und einem Standardwert, der aus einem gegebenen Callback berechnet wird, eingefügt und der eingefügte Wert zurückgegeben.
Verwenden Sie diese Methode anstelle von Map.prototype.getOrInsert(), wenn der Standardwert aufwendig zu berechnen ist und Sie vermeiden möchten, ihn zu berechnen, es sei denn, er wird wirklich benötigt.
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 durch Referenz, nicht durch Wert, verglichen. callback-
Eine Funktion, die den Wert zurückgibt, der eingefügt und zurückgegeben werden soll, wenn der Schlüssel im
Map-Objekt nicht bereits vorhanden ist. Die Funktion wird mit dem folgenden Argument aufgerufen:key-
Der gleiche Schlüssel, der an
getOrInsertComputed()übergeben wurde.
Rückgabewert
Der mit dem angegebenen Schlüssel im Map-Objekt verknüpfte Wert. Wenn der Schlüssel nicht gefunden werden kann, wird das Ergebnis von callback(key) eingefügt und zurückgegeben.
Beispiele
>Vermeidung unnötiger Standardberechnung
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 berechnet, wenn dies erforderlich ist.
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
| Specification |
|---|
| Upsert> # sec-map.prototype.getOrInsertComputed> |