← Назад к вопросам

Какие знаешь структуры данных, встроенные в JS?

1.0 Junior🔥 181 комментариев
#JavaScript Core

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI4 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Встроенные структуры данных в JavaScript

JavaScript предоставляет набор мощных встроенных структур данных, которые являются фундаментом для разработки сложных приложений. Эти структуры можно разделить на две основные категории: примитивные типы (которые хранят значения) и объектные типы (которые являются коллекциями или специализированными объектами).

Примитивные типы (хранящие единичные значения)

  • Number: Представляет целые и дробные числа (64-битный формат IEEE 754).
    let integer = 42;
    let float = 3.14;
    let infinity = Infinity;
    
  • String: Последовательность символов для представления текста.
    let str = "Hello";
    let template = `Sum: ${5 + 3}`; // шаблонные строки
    
  • Boolean: Логический тип с значениями true и false.
  • null: Специальное значение, обозначающее "ничего" или "пустое значение".
  • undefined: Значение, присваиваемое неинициализированным переменным.
  • Symbol (ES6): Уникальное и неизменяемое значение, часто используемое как ключ объекта.
    const uniqueKey = Symbol('id');
    
  • BigInt (ES2020): Для представления целых чисел произвольной длины.
    const bigNumber = 123456789012345678901234567890n;
    

Объектные типы (коллекции и специализированные объекты)

1. Объект (Object) — базовая структура "ключ-значение"

Самая фундаментальная структура. Используется для создания сложных сущностей, классов (до ES6) и как база для других коллекций.

const user = {
    name: "Анна",
    age: 30,
    address: {
        city: "Москва"
    }
};

2. Массив (Array) — индексированная коллекция

Специализированный объект для работы с упорядоченными списками данных. Предоставляет методы для манипуляций (push, pop, map, filter, reduce).

const fruits = ['apple', 'orange', 'banana'];
fruits.push('grape'); // добавление
const filtered = fruits.filter(fruit => fruit.length > 5); // фильтрация

3. Map (ES6) — коллекция "ключ-значение" с любыми ключами

Более современная альтернатива объекту для пар ключ-значение. Ключами могут быть любые типы (объекты, функции), а порядок элементов сохраняется.

const map = new Map();
map.set({ id: 1 }, 'value'); // объект как ключ
map.set('name', 'John');
console.log(map.get('name')); // John

4. Set (ES6) — коллекция уникальных значений

Структура, хранящая только уникальные значения любого типа. Эффективна для проверки наличия и удаления дубликатов.

const set = new Set([1, 2, 2, 3, 3]);
console.log(set); // Set(3) {1,\,2,\,3}
set.add(4);
console.log(set.has(2)); // true

5. WeakMap и WeakSet (ES6) — "слабые" коллекции

Специализированные версии Map и Set, где ключи являются "слабыми" ссылками (не препятствуют удалению объектов сборщиком мусора). Используются для метаданных или временных данных.

const weakMap = new WeakMap();
const obj = {};
weakMap.set(obj, 'private data');
// При удалении obj соответствующая запись автоматически удалится из weakMap

6. Date — представление даты и времени

Объект для работы с датами, временем и временными интервалами.

const now = new Date();
const specificDate = new Date('2024-12-31');

7. RegExp — регулярные выражения

Объект для работы с регулярными выражениями для поиска и манипуляций с текстом.

const regex = new RegExp('\\d+', 'g'); // поиск чисел
const str = 'Year 2024';
console.log(str.match(regex)); // ['2024']

8. Error и его специализации — обработка ошибок

Группа объектов для представления исключений (Error, SyntaxError, TypeError, ReferenceError и др.).

throw new TypeError('Invalid type provided');

Сравнение ключевых коллекций

  • Object vs Map: Object использует строки/Symbols как ключи, Map — любые типы. Map сохраняет порядок добавления, имеет методы (size, clear) и лучшую производительность при частых добавлениях/удалениях.
  • Array vs Set: Array — упорядоченный список с возможностью дубликатов и индексами. Set — только уникальные значения с быстрым проверкой наличия (has).

Практическое применение и выбор структуры

Выбор структуры зависит от задачи:

  • Хранение конфигурации или сущности с фиксированными свойствамиObject
  • Список элементов с возможностью сортировки, фильтрацииArray
  • Словарь с динамическими ключами (особенно не-строковыми)Map
  • Удаление дубликатов или проверка уникальностиSet
  • Ассоциация приватных данных с объектами без утечек памятиWeakMap

Встроенные структуры данных в JavaScript, особенно с дополнениями ES6+, образуют мощный инструментарий, покрывающий большинство потребностей фронтенд-разработки — от управления состоянием интерфейса до сложных алгоритмов обработки данных. Их глубокое понимание позволяет выбирать оптимальные решения для эффективной работы с данными в приложении.