Map.prototype.getOrInsert()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Die getOrInsert() Methode von Map Instanzen gibt den Wert zurück, der dem angegebenen Schlüssel in dieser Map entspricht. Wenn der Schlüssel nicht vorhanden ist, wird ein neuer Eintrag mit dem Schlüssel und einem gegebenen Standardwert eingefügt und der eingefügte Wert zurückgegeben.
Wenn die Berechnung des Standardwerts aufwendig ist, ziehen Sie in Betracht, stattdessen Map.prototype.getOrInsertComputed() zu verwenden, das einen Callback verwendet, um den Standardwert nur bei Bedarf zu berechnen.
Probieren Sie es aus
const map = new Map([["bar", "foo"]]);
console.log(map.getOrInsert("bar", "default"));
// Expected output: "foo"
console.log(map.getOrInsert("baz", "default"));
// Expected output: "default"
Syntax
getOrInsert(key, defaultValue)
Parameter
key-
Der Schlüssel des Werts, der aus dem
MapObjekt zurückgegeben werden soll. Objektschlüssel werden nach Referenz verglichen, nicht nach Wert. defaultValue-
Der Wert, der eingefügt und zurückgegeben wird, wenn der Schlüssel im
Map-Objekt noch nicht vorhanden ist.
Rückgabewert
Der Wert, der dem angegebenen Schlüssel im Map-Objekt zugeordnet ist. Wenn der Schlüssel nicht gefunden werden kann, wird defaultValue eingefügt und zurückgegeben.
Beschreibung
Die Methode getOrInsert() ist äquivalent zu folgendem:
if (map.has(key)) {
return map.get(key);
}
map.set(key, defaultValue);
return defaultValue;
Sie ähnelt auch folgendem Muster (das etwas weniger verlässlich ist, wenn null oder undefined gültige Werte in Ihrer Map sind):
map.set(key, map.get(key) ?? defaultValue);
Beispiele
>Anwenden von Standardwerten
Sie können getOrInsert() verwenden, um sicherzustellen, dass ein Schlüssel in einer Map existiert, selbst wenn Sie seinen Wert momentan nicht benötigen. Dies wird üblicherweise verwendet, um Benutzereingaben zu normalisieren.
Stellen Sie sich vor, Sie haben eine Map von Benutzervorlieben und möchten sicherstellen, dass eine bestimmte Präferenz immer auf einen Standardwert gesetzt wird, wenn der Benutzer sie nicht angegeben hat:
const options = readConfig();
options.getOrInsert("theme", "light");
options.getOrInsert("fontSize", 14);
// Later in your code, you can safely assume these options exist
document.body.dataset.theme = options.get("theme");
Spezifikationen
| Specification |
|---|
| Upsert> # sec-map.prototype.getOrInsert> |