Новая функция upsert для объекта Map в JavaScript: Что это и зачем она нужна?

16f8ee5e 3c3a 45d9 b074 44db75e01f84 HTML

Сегодня мы поговорим о новой и перспективной функции upsert, которая может появиться в объекте Map в JavaScript. Эта функция обещает упростить работу с данными, хранящимися в формате ключ-значение, и открыть новые возможности для разработчиков.

Что такое Map в JavaScript?

может показаться похожupsertНа первый взгляд MapЭто структура данных, которая позволяет хранить пары ключ-значение. в JavaScript. , давайте вспомним, что такое MapПрежде чем перейти к обсуждению функции Object, но между ними есть важные различия:

  • Отсутствие прототипов: В отличие от Object, у Map нет прототипов, поэтому он не содержит встроенных ключей, пока вы их не добавите.
  • : В Ключи любого типаMap ключом может быть что угодно — от примитивов до функций и объектов.
  • : `КартаПорядок вставкиMap запоминае
  • : КоличеЛегкий доступ к размеруMap можно легко получить с помощью свойства size.
  • Итерируемость: Map является итерируемым, что упрощает его использование в циклах и других конструкциях.
  • показывает: MapПроизводительностьObject.

Создание и использование Map

Создать экземпляр Map можно следующим образом:

let example = new Map();
example.set('test', 'value');

Теперь, если вы добавите элемент с уже существующим ключом, его значение будет перезаписано:

example.set('test', true);

Но что делать, если вам нужно добавить элемент только в том случае, если его еще нет, или обновить его значение, если элемент уже существует? Обычно это требует дополнительной проверки:

if (!example.has('test')) {
example.set('test', 'new value');
}
example.get('test').myFunctionForMessingWithThisKeyEntry();

Эта проверка может стать рутинной задачей. И тут на сцену выходит функция upsert.

Что такое upsert и как она работает?

upsert — это предложенная функция для Map, которая позволяет одновременно проверять существование элемента и выполнять действия в зависимости от результата проверки.

upsert принимает три аргумента:

  1. Ключ элемента, который вы хотите проверить или добавить.
  2. Функция для существующего элемента — выполняется, если
  3. Функция для нового элемента — выполняется, если элемент не существует.

Вот как может выглядеть предыдущий пример с использованием upsert:

example
.upsert('test', undefined, () => 'new value')
.myFunctionForMessingWithThisKeyEntry();

В этом случае, если элемент с ключом test уже существует, ничего не происходит. Если элемента нет, он создается с новым значением.

Другой пример использования:

example.upsert('test', old => old.someOperation(), undefined);

Здесь old соответствует значению, которое возвращает map.get('test'). Если элемент существует, выполняется функция someOperation(), если нет — ничего не происходит.

Преимущества upsert

Функция upsert делает код более читаемым и упрощает операции с данными в Map. Она позволяет избегать дублирования кода и сократить количество проверок, необходимых для выполнения стандартных операций.

Текущий статус функции

На данный момент upsert для объекта Map находится на второй стадии процесса ТС39. Это означает, что функция еще находится в стадии обсуждения, и вы можете принять участие в этом процессе, высказав свое мнение в соответствующем репозитории.

Заключение

Функция upsert имеет потенциал значительно упростить работу с объектом Map в JavaScript, особенно в тех случаях, когда необходимо часто проверять наличие элементов и выполнять операции с ними. Эта функция, если будет принята, может стать ценным инструментом для разработчиков, помогая писать более чистый и эффективный код.

Оцените статью