В чем разница между 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.