Коллекция Map — это встроенный объект JavaScript, предназначенный для хранения пар ключ-значение. Она похожа на обычный объект ({}), но обладает важными преимуществами:

  • Любые типы ключей — строки, числа, объекты, функции.
  • Сохранение порядка вставки — перебор идёт в том порядке, в котором вы добавили элементы.
  • Удобные методы для работы — set(), get(), has(), delete(), clear() и итерации через for...of.

Эта структура особенно полезна, если вы хотите чётко контролировать порядок элементов и не ограничиваться только строковыми ключами, как в обычных объектах.

Пример: создаём коллекцию и работаем с ней

? Сегодня вам бесплатно доступен тренажёр по HTML и CSS.

const userInfo = new Map();

userInfo.set('name', 'Алексей'); // строка
userInfo.set(42, 'Число');       // число
userInfo.set(true, 'Булево');    // логическое значение

console.log(userInfo.get(42)); // Выведет: 'Число'

Здесь мы добавили три элемента с разными типами ключей. Именно это отличает Map от обычного объекта — вы можете использовать, например, ключи-объекты или даже функции:

const objKey = { id: 1 };
const fnKey = () => {};

userInfo.set(objKey, 'объект');
userInfo.set(fnKey, 'функция');

console.log(userInfo.get(objKey)); // 'объект'

Перебор Map

Вы можете пройтись по элементам Map с помощью for...of:

for (const [key, value] of userInfo) {
  console.log(key, value);
}

Также доступны методы:

  • map.keys() — только ключи,
  • map.values() — только значения,
  • map.entries() — пары [ключ, значение].
console.log([...userInfo.keys()]); // Все ключи
console.log([...userInfo.values()]); // Все значения

Проверка наличия, удаление и очистка

userInfo.has('name'); // true
userInfo.delete(42);  // удаляет элемент с ключом 42
userInfo.clear();     // полностью очищает Map

Отличия от объектов

Особенность Map Object
Типы ключей любые только строки и символы
Порядок сохраняется не гарантирован
Итерация проще и более гибкая требует Object.entries и т. д.
Производительность быстрее на больших объёмах может быть медленнее

Когда использовать Map

Используйте Map, если:

  • Нужен предсказуемый порядок элементов.
  • Ключами должны быть не только строки.
  • Нужно часто добавлять, удалять или перебирать элементы.
  • Важно избежать конфликтов с ключами вроде __proto__ или hasOwnProperty.

Заключение

Map — мощная и удобная структура данных, особенно когда работа с обычными объектами становится громоздкой. Она расширяет привычные возможности, делает код чище и понятнее, а также даёт контроль над ключами и порядком. В современном JavaScript Map — это стандарт, на который стоит ориентироваться в сложных приложениях.

Больше обзоров веб-функций — в телеграм-канале HTML Academy.

Нашли ошибку или опечатку? Напишите нам.