PassFront
  1. PassFront
  2. База знаний
  3. Массивы и структуры данных

В чем разница между Map и Object?

Массивы и структуры данных

`Map` и обычный объект оба хранят пары «ключ–значение», но `Map` — специализированная коллекция с ключами любого типа, гарантированным порядком и удобным API.

Ключи

  • Object — только строки и символы (числовые ключи приводятся к строкам).
  • Map — ключ любого типа: объект, функция, число, NaN.

Порядок

  • Object — порядок в целом сохраняется, но целочисленные ключи сортируются.
  • Map — строго сохраняет порядок вставки.

Размер и итерация

  • Object — размер считают вручную (Object.keys(obj).length).
  • Map — свойство size; напрямую итерируется через for...of.

Прототип

  • Object — есть унаследованные ключи (toString, constructor) — риск коллизий.
  • Map — чистое хранилище без «лишних» ключей.

Производительность и сериализация

  • Map — быстрее при частых добавлениях/удалениях.
  • Object — легко сериализуется в JSON; Map — нет (нужна конвертация).
const map = new Map([[1, 'a']]);
const obj = { 1: 'a' };
map.get(1);   // 'a'
obj[1];       // 'a' — но ключ стал строкой '1'

Как выбрать

  • Динамический словарь, нестроковые ключи, частые изменения → Map.
  • Простая фиксированная структура, JSON, доступ по известным полям → Object.

Коротко для собеседования

Map — ключи любого типа, size, точный порядок, чистое хранилище, быстрые изменения. Object — строковые ключи, простая сериализация в JSON. Для словаря с произвольными ключами выбирают Map.

Другие вопросы раздела