QUESTION: Що таке Map і Set?
У сучасному мові JavaScript структури даних Map і Set є потужними вбудованими колекціями, які суттєво розширюють можливості розробника порівняно з традиційними об'єктами та масивами. Ці інструменти забезпечують високу продуктивність і зручність під час вирішення повсякденних завдань програмування.
Колекція Map є класичним словником пар ключ-значення. Головною перевагою Map є те, що в ролі ключа може виступати абсолютно будь-який тип даних, включаючи об'єкти, функції та примітивні типи, тоді як у звичайних об'єктах ключами можуть бути лише рядки або символи.
Для створення нової колекції використовується простий синтаксис конструктора new Map(). Після цього для наповнення та керування даними застосовуються стандартні методи: set() для додавання пари, get() для отримання значення за ключем, а також метод has(), що дозволяє швидко перевірити наявність ключа в колекції.
Колекція Set, у свою чергу, є набором унікальних значень будь-якого типу, де кожен елемент може зустрічатися лише один раз. Це робить Set ідеальним інструментом для фільтрації дублікатів з масивів або перевірки наявності елементів у великих наборах даних.
Основні методи для роботи з набором включають add() для додавання нового елемента, has() для перевірки його наявності та delete() для видалення. Для перетворення набору назад у масив можна використовувати оператор поширення або метод Array.from().
Важливим доповненням стандартних колекцій є їхні «слабкі» аналоги — WeakMap і WeakSet. Головна особливість WeakMap і WeakSet полягає в тому, що вони використовують слабкі посилання на об'єкти-ключі або елементи, що дозволяє збирачу сміття автоматично видаляти їх з пам'яті.
Використання WeakMap і WeakSet запобігає витокам пам'яті у складних додатках, оскільки елементи автоматично видаляються, щойно на них зникають інші посилання. Це робить їх незамінними для кешування даних та зберігання приватних властивостей об'єктів.