Map.prototype.getOrInsert()
Baseline
2026
Newly available
Since February 2026, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
getOrInsert() は Map インスタンスのメソッドで、この対応表 (Map) 内で指定されたキーに対応する値を返します。キーが存在しない場合、指定されたデフォルト値を持つ新しい項目を挿入し、挿入された値を返します。
デフォルト値の計算にコストがかかる場合は、代わりに Map.prototype.getOrInsertComputed() を使用することを検討してください。これはコールバックを受け取り、実際に必要になった場合にのみデフォルト値を計算します。
試してみましょう
const map = new Map([["bar", "foo"]]);
console.log(map.getOrInsert("bar", "default"));
// 予想される結果: "foo"
console.log(map.getOrInsert("baz", "default"));
// 予想される結果: "default"
構文
getOrInsert(key, defaultValue)
引数
key-
kMapオブジェクトから値を取得する項目のキー。オブジェクトのキーは値ではなく参照として比較されます。 defaultValue-
キーが
Mapオブジェクト内に存在しなかった場合に、挿入して返す値です。
返値
この WMap オブジェクト内の指定されたキーに関連付けられた値です。キーが見つからなかった場合は、undefined が返されます。
解説
getOrInsert() メソッドは、次のものと同等です。
if (map.has(key)) {
return map.get(key);
}
map.set(key, defaultValue);
return defaultValue;
同時に、以下のパターンとも似ています(ただし、対応表内で null や undefined が有効な値である場合、信頼性は若干低下します)。
map.set(key, map.get(key) ?? defaultValue);
例
>配列の対応表
それぞれのキーが値の配列に割り当てられている対応表では、getOrInsert() を使用することで、新しい値を配列に追加しようとする前に、そのキーに対応する配列が存在することを確認できます。
map.getOrInsert(key, []).push(value);
デフォルト値の適用
getOrInsert() を使用することで、その値が現在必要ない場合でも、キーが対応表に存在することを保証できます。これは通常、ユーザー入力の正規化を行うために行われます。
ユーザーの設定情報をまとめた対応表があるとします。ユーザーが特定の環境設定を指定していない場合、その環境設定が常にデフォルト値になるようにしたいと思います。
const options = readConfig();
options.getOrInsert("theme", "light");
options.getOrInsert("fontSize", 14);
// コードの後半では、これらのオプションが存在すると安心して仮定できます
document.body.dataset.theme = options.get("theme");
仕様書
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-map.prototype.getorinsert> |