Map, Set, WeekMap, WeekSet
Map – это коллекция ключ/значение, как и Object. Но основное отличие в том, что Map позволяет использовать ключи любого типа.
- Методы и свойства:
- new Map() – создаёт коллекцию
- map.set(key, value) – записывает по ключу key значение value
- map.get(key) – возвращает значение по ключу или undefined, если ключ key отсутствует
- map.has(key) – возвращает true, если ключ key присутствует в коллекции, иначе false
- map.delete(key) – удаляет элемент (пару «ключ/значение») по ключу key
- map.clear() – очищает коллекцию от всех элементов
- map.size – возвращает текущее количество элементов
Set – это особый вид коллекции, где каждое значение может появляться только один раз.
- Методы:
- new Set(iterable) – создаёт Set, и если в качестве аргумента был предоставлен итерируемый объект (обычно это массив), то копирует его значения в новый Set
- set.add(value) – добавляет значение (если оно уже есть, то ничего не делает), возвращает тот же объект set
- set.delete(value) – удаляет значение, возвращает true, если value было в множестве на момент вызова, иначе false
- set.has(value) – возвращает true, если значение присутствует в множестве, иначе false
- set.clear() – удаляет все имеющиеся значения
- set.size – возвращает количество элементов в множестве
WeakMap – это Map-подобная коллекция, позволяющая использовать в качестве ключей только объекты, и автоматически удаляющая их вместе с соответствующими значениями, как только они становятся недостижимыми иными путями.
WeakSet – это Set-подобная коллекция, которая хранит только объекты и удаляет их, как только они становятся недостижимыми иными путями.
WeakMap и WeakSet используются как вспомогательные структуры данных в дополнение к «основному» месту хранения объекта. Если объект удаляется из основного хранилища и нигде не используется, кроме как в качестве ключа в WeakMap или в WeakSet, то он будет удалён автоматически.