Skip to content

Map & Set — когда объекта и массива мало ​

Map — ассоциативный массив «на стероидах» ​

Объект тоже хранит пары, но Map удобнее: любые ключи, сохраняет порядок, есть размер.

js
const prices = new Map();
prices.set("Нарын-кала", 1500);
prices.set("Сулак", 2500);
prices.get("Сулак");        // 2500
prices.has("Сулак");        // true
prices.delete("Сулак");
prices.size;                // 1

// Перебор — в отличие от объекта, Map ПОРЯДОК ГАРАНТИРУЕТ
for (const [name, price] of prices) { ... }

// Из массива пар:
new Map([["a", 1], ["b", 2]]);
// В объект и обратно:
Object.fromEntries(prices);            // Map → объект
new Map(Object.entries(tour));         // объект → Map

Когда Map вместо объекта: ключи — не строки (числа, объекты), много добавлений/удалений, нужен .size. В остальном — обычный объект короче.

Set — массив БЕЗ дубликатов ​

js
const tags = new Set(["nature", "history", "nature"]);
tags.size;                  // 2 — дубликат съеден!
tags.add("city");
tags.has("nature");         // true
tags.delete("city");

// Классика: убрать дубли из массива ОДНОЙ строкой
const unique = [...new Set(cities)];

// Множества операции:
const both = new Set([...a].filter(x => b.has(x)));      // пересечение

WeakMap / WeakSet — упомянем для собеседования ​

То же, но ключи — только объекты, и не мешают сборке мусора (удаляются вместе с объектом). Используется внутри фреймворков (React хранит метаданные так). Писать самому редко.

Обновлено: 01.10.2026

Built with VitePress and ❤️