Get to know MDN better
This page was translated from English by the community. Learn more and join the MDN Web Docs community.
Этот раздел содержит обзор коллекций Set и словарей Map - встроенных структур данных с доступом по ключу.
Map - реализация простого ассоциативного массива (словаря). Он содержит данные в виде набора пар ключ/значение(ключи уникальны) и предоставляет методы для доступа и манипулирования этими данными.
Также как и объект, словарь позволяет
Словари, как специализированная структура данных, имеют существенные преимущества по сравнению с объектами:
В следующем примере приведены основные операции со словарём:
Больше примеров и полное описание на странице справочника Map .
WeakMap это специальный вид словаря, ключами которого могут быть только объекты, причём ссылки на них в WeakMap являются слабыми (не учитываются сборщиком мусора (garbage collector GC)).
Примечание: Интерфейс WeakMap совпадает с Map, единственное отличие - ключи WeakMap нельзя итерировать (т.e. нельзя получить список ключей). Это понятно, поскольку в таком случае возникла бы неопределённость с достоверностью этого списка в зависимости от состояния garbage collection.
Больше примеров, полное описание, а также обсуждение "Зачем WeakMap?" на странице справочника WeakMap.
Отметим, что WeakMap, в частности, может элегантно использоваться для упаковки приватных данных или деталей реализации. Следующий пример взят из статьи Ника Фитцджеральда «Hiding Implementation Details with ECMAScript 6 WeakMaps» (англ.). Приватная часть сохраняется как значение в privates и имеет время жизни такое же как и сущность класса. Сам класс и его методы публичны; прочее недоступно извне модуля:
Set реализация коллекции - структура данных, которая содержит список уникальных элементов в порядке их добавления.
В следующем примере приведены основные операции по работе с коллекцией Set:
Больше примеров и полное описание на странице справочника Set
Можно создать Array из Set с помощью Array.from или используя spread operator.
В свою очередь, конструктор Set может принимать Array в качестве аргумента.
Примечание: Поскольку Set структура работает с уникальными значениями, любые повторяющиеся элементы из Array будут проигнорированы.
Словари, как специализированная структура данных, имеют существенные отличия по сравнению с массивами:
WeakSet это специальный вид коллекции, элементами которой могут быть только объекты. Ссылки на эти объекты в WeakSet являются слабыми (не учитываются сборщиком мусора (garbage collector GC)).
Примечание: Элементы WeakSet уникальны и могут быть добавлены только один раз, также как и в Set.
Основные отличия от Set:
Использование WeakSet достаточно специфическое. Пользуясь тем, что они не могут создавать утечек памяти, в них можно, например, безопасно помещать ссылки на DOM-элементы.
Больше примеров и полное описание на странице справочника WeakSet
Сравнение на равенство ключей в Map objects или объектов в Set основано на "same-value-zero algorithm":
This page was last modified on 14 дек. 2025 г. by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.