JavaScript·100 питань

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 запобігає витокам пам'яті у складних додатках, оскільки елементи автоматично видаляються, щойно на них зникають інші посилання. Це робить їх незамінними для кешування даних та зберігання приватних властивостей об'єктів.

Чи корисна ця відповідь?

Інші питання цієї теми

Пов’язані питання з інших тем