Map и Set

Коллекции с уникальными ключами (Map) и уникальными значениями (Set).

Зачем нужно

Map — словарь с любыми ключами (не только строки). Set — коллекция уникальных значений. Оба сохраняют порядок вставки и быстрее объектов для частых добавлений/удалений.

Где используется

  • Кэширование с объектными ключами (Map)
  • Удаление дубликатов (Set)
  • Подсчёт уникальных элементов

Code

// Map
const map = new Map();
map.set('key', 'value');
map.set(42, 'number key');
map.set(obj, 'object key'); // ключ — объект!

map.get('key');    // 'value'
map.has(42);       // true
map.size;          // 3
map.delete('key');

for (const [key, value] of map) { /* ... */ }

// Map из массива пар
const m = new Map([['a', 1], ['b', 2]]);

// Set
const set = new Set([1, 2, 3, 2, 1]);
set.size; // 3 (дубликаты удалены)

set.add(4);
set.has(3);    // true
set.delete(1);

for (const val of set) { /* ... */ }

// Уникальные элементы массива
const unique = [...new Set(array)];

// WeakMap / WeakSet — ключи собираются GC
const wm = new WeakMap();
wm.set(domElement, { clicks: 0 }); // не мешает GC удалить элемент

Связанные темы

Ресурсы