Set, Map, WeakSet та WeakMap у JavaScript
JavaScript надає вбудовані структури даних, які роблять роботу з колекціями більш зручною та ефективною. Розглянемо Set, Map, WeakSet та WeakMap.
Set
Set — це колекція унікальних значень, де кожне значення може з'являтися лише один раз.
Особливості Set
- Зберігає лише унікальні значення.
- Значення можуть бути будь-якого типу.
Основні методи Set
add(value)— додає значення.delete(value)— видаляє значення.has(value)— перевіряє наявність значення.clear()— очищає колекцію.size— повертає кількість елементів.
Приклад використання Set
const set = new Set();
set.add(1);
set.add(2);
set.add(2); // Ігнорується, оскільки 2 вже в колекції
console.log(set.has(1)); // true
console.log(set.size); // 2
set.delete(1);
console.log(set); // Set { 2 }Map
Map — це колекція пар ключ-значення, де ключі можуть бути будь-якого типу.
Особливості Map
- Упорядкована структура.
- Дозволяє використовувати об'єкти як ключі.
Основні методи Map
set(key, value)— додає пару ключ-значення.get(key)— повертає значення за ключем.delete(key)— видаляє пару за ключем.has(key)— перевіряє наявність ключа.clear()— очищає колекцію.size— повертає кількість елементів.
Приклад використання Map
const map = new Map();
map.set('name', 'John');
map.set({ id: 1 }, 'Object');
console.log(map.get('name')); // John
console.log(map.size); // 2
map.delete('name');
console.log(map); // Map { { id: 1 } => 'Object' }WeakSet
WeakSet — це колекція, яка зберігає лише об'єкти. Ці об'єкти є слабко посилальними, що дозволяє збирачу сміття видаляти їх, якщо немає інших посилань.
Особливості WeakSet
- Зберігає лише об'єкти.
- Не можна отримати розмір або ітерувати елементи.
- Використовується для тимчасового зберігання об'єктів.
Основні методи WeakSet
add(value)— додає об'єкт.delete(value)— видаляє об'єкт.has(value)— перевіряє наявність об'єкта.
Приклад використання WeakSet
const weakSet = new WeakSet();
let obj = { name: 'John' };
weakSet.add(obj);
console.log(weakSet.has(obj)); // true
obj = null; // Об'єкт буде видалено з WeakSet збирачем сміттяWeakMap
WeakMap — це колекція пар ключ-значення, де ключі можуть бути лише об'єктами, а значення можуть бути будь-якими. Ключі є слабко посилальними, що дозволяє збирачу сміття видаляти об'єкти, якщо немає більше посилань.
Особливості WeakMap
- Ключі можуть бути лише об'єктами.
- Значення можуть бути будь-якими.
- Елементи є слабко посилальними, що означає автоматичне видалення з колекції, якщо ключ недоступний.
- Не можна ітерувати елементи колекції або отримати її розмір.
Основні методи WeakMap
set(key, value)— додає пару ключ-значення.get(key)— повертає значення за ключем.delete(key)— видаляє пару ключ-значення.has(key)— перевіряє наявність ключа.
Приклад використання WeakMap
const weakMap = new WeakMap();
// Створити об'єкт
let user = { name: "John" };
// Додати об'єкт як ключ і значення
weakMap.set(user, "User data");
console.log(weakMap.get(user)); // "User data"
// Видалити посилання на об'єкт
user = null;
// Об'єкт буде видалено з WeakMap збирачем сміттяОбмеження WeakMap:
WeakMap підходить для зберігання даних, пов'язаних з об'єктами, які можуть бути видалені збирачем сміття. Наприклад, для прикріплення метаданих до DOM-об'єктів.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.