Map.prototype.getOrInsert()
Базовый уровень Недавно появился
Эта функция работает на самых новых устройствах и версиях браузеров. Эта функция может не работать на более старых устройствах или версиях браузеров. Она доступна во всех браузерах с февраля 2026 года.
Метод getOrInsert() экземпляров Map возвращает значение, соответствующее указанному ключу в этом Map. Если ключ отсутствует, он вставляет новую запись с ключом и заданным значением по умолчанию, и возвращает вставленное значение.
Если вычисление значения по умолчанию является ресурсоемким, рассмотрите возможность использования Map.prototype.getOrInsertComputed(), который принимает колбэк для вычисления значения по умолчанию только в том случае, если оно действительно необходимо.
Попробовать
const map = new Map([["bar", "foo"]]);
console.log(map.getOrInsert("bar", "default"));
// Expected output: "foo"
console.log(map.getOrInsert("baz", "default"));
// Expected output: "default"
Синтаксис
getOrInsert(key, defaultValue)
Параметры
-
key - Ключ значения, которое необходимо получить из объекта
Map. Ключи объектов сравниваются по ссылке, а не по значению. -
defaultValue - Значение для вставки и возврата, если ключ еще не присутствует в объекте
Map.
Возвращаемое значение
Значение, связанное с указанным ключом в объекте Map. Если ключ не найден, вставляется и возвращается defaultValue.
Описание
Метод 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);
// Later in your code, you can safely assume these options exist
document.body.dataset.theme = options.get("theme");
Спецификации
Совместимость с браузерами
| Десктоп | Мобильные | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
getOrInsert |
145 |
145 |
144 |
129 |
26.2 |
145 |
144 |
96 |
26.2 |
Нет |
145 |
26.2 |
1.2.20 |
2.6.7 |
26.0.0 |
Смотрите также
- Полифил
Map.prototype.getOrInsertвcore-js - Полифил es-shims
Map.prototype.getOrInsert MapMap.prototype.get()Map.prototype.set()Map.prototype.has()Map.prototype.getOrInsertComputed()
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/getOrInsert