Spec-Zone.ru › JavaScript

Map.prototype.getOrInsertComputed()

Базовая поддержка Недавно доступно

Эта функция работает на самых новых устройствах и версиях браузеров. Эта функция может не работать на старых устройствах или версиях браузеров. Она доступна во всех браузерах с февраля 2026 года.

Метод getOrInsertComputed() экземпляров Map возвращает значение, соответствующее указанному ключу в этом Map. Если ключ отсутствует, он вставляет новую запись с ключом и значением по умолчанию, вычисленным с помощью предоставленной функции обратного вызова, и возвращает вставленное значение.

Используйте этот метод вместо Map.prototype.getOrInsert(), когда вычисление значения по умолчанию требует больших затрат, и вы хотите избежать его вычисления, если оно фактически не требуется.

Попробовать

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"

Синтаксис

getOrInsertComputed(key, callback)

Параметры

key
Ключ элемента для возврата из объекта Map. Ключи объектов сравниваются по ссылке, а не по значению.
callback
Функция, которая возвращает значение для вставки и возврата, если ключ еще не присутствует в объекте Map. Функция вызывается со следующим аргументом:
key
Тот же ключ, который был передан в getOrInsertComputed().

Возвращаемое значение

Значение, связанное с указанным ключом в объекте Map. Если ключ не найден, результат callback(key) вставляется и возвращается.

Исключения

TypeError
Генерируется, если callback не является вызываемой функцией.

Примеры

Избегание ненужного вычисления значения по умолчанию

При использовании Map.prototype.getOrInsert() значение по умолчанию вычисляется каждый раз, даже если оно не требуется. С getOrInsertComputed() значение по умолчанию вычисляется только при необходимости.

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

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

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

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

Настольные Мобильные Серверные
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
getOrInsertComputed
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.getOrInsertComputed в core-js
  • Полифилл es-shims для Map.prototype.getOrInsertComputed
  • Map
  • Map.prototype.get()
  • Map.prototype.set()
  • Map.prototype.has()
  • Map.prototype.getOrInsert()

© 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/getOrInsertComputed

Spec-Zone.ru

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