Spec-Zone.ru › JavaScript

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");

Спецификации

Спецификация
Спецификация языка ECMAScript® 2027
# sec-map.prototype.getorinsert

Совместимость с браузерами

Десктоп Мобильные Сервер
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
  • Map
  • Map.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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API