Map.prototype.getOrInsertComputed() - JavaScript | MDN
Try it
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
js
getOrInsertComputed(key, callback)
Parameters
key-
The key of the element to return from the
Mapobject. Object keys are compared by reference, not by value. callback-
A function that returns the value to insert and return if the key is not already present in the
Mapobject. The function is called with the following argument:key-
The same key that was passed to
getOrInsertComputed().
Return value
The value associated with the specified key in the Map object. If the key can't be found, the result of callback(key) is inserted and returned.
Exceptions
TypeError-
Thrown if
callbackisn't callable.
Examples
Avoiding unnecessary default computation
When using Map.prototype.getOrInsert(), the default value is computed every time, even if it is not needed. With getOrInsertComputed(), the default value is only computed when necessary.
js
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
Specifications
| Specification |
|---|
| ECMAScript® 2027 Language Specification # sec-map.prototype.getorinsertcomputed |