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