Как получить или установить значение в JavaScript Map без повторения кода?

Я работаю с Map в JavaScript и столкнулся с проблемой. Мне нужно получить элемент из Map, а если его нет - добавить начальное значение. При этом я хочу использовать const для локальных переменных.

Сейчас я делаю так:

const item = myMap.has(key) ? myMap.get(key) : myMap.set(key, createInitialValue()).get(key);

Или вот так, чтобы избежать вызова .get() сразу после .set():

const item = myMap.has(key) ? myMap.get(key) : (() => {
  const value = createInitialValue(); 
  myMap.set(key, value); 
  return value;
})();

Эти варианты кажутся мне слишком громоздкими. Есть ли более простой способ получить элемент из Map в const переменную, автоматически добавляя его, если он отсутствует? Буду благодарен за подсказки!

слушай, а может попробовать метод .setDefault()? он как раз для таких случаев придуман. выглядит это примерно так:

const item = myMap.setDefault(key, createInitialValue());

этот метод сам проверит есть ли значение по ключу, если нет - создаст новое используя переданную функцию, а потом вернет значение. получается коротко и ясно, без лишних проверок. я сам недавно узнал про такую фишку, может и тебе пригодится

Для такого сценария отлично подойдет метод Map.prototype.get() с дефолтным значением. Вот как это можно сделать:

const item = myMap.get(key) ?? myMap.set(key, createInitialValue()).get(key);

Этот подход короче и читабельнее. Он использует оператор нулевого слияния (??) для проверки наличия значения. Если значение не найдено, мы устанавливаем новое и сразу его возвращаем. Такой код более лаконичный и выразительный, чем предыдущие варианты.

А вы пробовали использовать метод .getOrDefault()? Он как раз для таких случаев. Например:

const item = myMap.getOrDefault(key, createInitialValue());

Этот метод сам проверит, есть ли значение по ключу, и если нет - создаст новое. Просто и понятно, без лишнего кода. Как вам такой вариант?