Структуры данных JavaScript основные примитивы: string, number, boolean коллекции: Array (список с заданным порядком), Object (хранилище пар «ключ-значение») структуры, появившиеся в ES6: Map — коллекция пар «ключ-значение» с сохранением порядка, допускающая ключи любых типов Set — упорядоченная коллекция неповторяющихся значений специализированные типы: WeakMap, WeakSet — структуры со слабыми ссылками, удобные для GC существенное свойство — мутабельность: массивы и объекты можно изменять, а примитивы — нельзя для контролируемого управления данными применяют классы и иммутабельные библиотеки (Immutable.js) выбор структуры определяет…
Какие структуры данных используются в JavaScript?
Структуры данных JavaScript основные примитивы: string, number, boolean коллекции: Array (список с заданным порядком), Object (хранилище пар «ключ-значение») структуры, появившиеся в ES6: Map — коллекция пар…
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Структуры данных JavaScript
- основные примитивы: string, number, boolean
- коллекции: Array (список с заданным порядком), Object (хранилище пар «ключ-значение»)
- структуры, появившиеся в ES6:
- Map — коллекция пар «ключ-значение» с сохранением порядка, допускающая ключи любых типов
- Set — упорядоченная коллекция неповторяющихся значений
- специализированные типы: WeakMap, WeakSet — структуры со слабыми ссылками, удобные для GC
- существенное свойство — мутабельность: массивы и объекты можно изменять, а примитивы — нельзя
- для контролируемого управления данными применяют классы и иммутабельные библиотеки (Immutable.js)
- выбор структуры определяет эффективность поиска, вставки, удаления данных в приложении
Подробный ответ
Основной ответ
В JavaScript предусмотрено несколько ключевых структур данных для организации и хранения информации. К наиболее распространённым относятся примитивы (string, number, boolean и т.д.) и объекты, однако при обсуждении структур данных обычно имеют в виду более сложные типы: массивы, объекты, Set, Map, WeakSet и WeakMap. У каждой структуры свои способы хранения и доступа к данным, поэтому они подходят для разных задач.
Ключевые моменты
- Массивы (Array) представляют собой упорядоченные наборы элементов с индексацией целыми числами. Они предоставляют методы для добавления, удаления и перебора значений. Современные движки оптимизируют такие операции, включая быстрый доступ и сортировку.
- Объекты (Object) работают как хеш-таблицы с парами «ключ-значение», где ключом может быть строка или символ. Их применяют для ассоциативного хранения данных. Начиная с ES6, для более универсальной работы с ключами любых типов доступны Map и Set.
- Map хранит ключи любых типов и сохраняет порядок их добавления. По сравнению с обычным объектом эта структура обеспечивает более предсказуемую производительность.
- Set содержит только уникальные значения, поэтому подходит для быстрого поиска и исключения дубликатов.
- WeakMap и WeakSet похожи соответственно на Map и Set, однако их ключи (в WeakMap) или значения (в WeakSet) удерживаются слабыми ссылками. Это помогает управлять памятью и предотвращать утечки.
Практический контекст
В React 18+ Map нередко применяют для хранения кэшированных данных, использующих ключи произвольных типов, а Set — для управления уникальными событиями или идентификаторами. WeakMap подходит для хранения приватных данных в классах и контекста без риска утечки памяти. У каждого типа есть собственные trade-offs с точки зрения производительности и сценариев применения, поэтому при оптимизации больших приложений их необходимо учитывать.