Какие знаешь структуры данных, встроенные в JS?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Встроенные структуры данных в 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');
Сравнение ключевых коллекций
ObjectvsMap:Objectиспользует строки/Symbols как ключи,Map— любые типы.Mapсохраняет порядок добавления, имеет методы (size,clear) и лучшую производительность при частых добавлениях/удалениях.ArrayvsSet:Array— упорядоченный список с возможностью дубликатов и индексами.Set— только уникальные значения с быстрым проверкой наличия (has).
Практическое применение и выбор структуры
Выбор структуры зависит от задачи:
- Хранение конфигурации или сущности с фиксированными свойствами →
Object - Список элементов с возможностью сортировки, фильтрации →
Array - Словарь с динамическими ключами (особенно не-строковыми) →
Map - Удаление дубликатов или проверка уникальности →
Set - Ассоциация приватных данных с объектами без утечек памяти →
WeakMap
Встроенные структуры данных в JavaScript, особенно с дополнениями ES6+, образуют мощный инструментарий, покрывающий большинство потребностей фронтенд-разработки — от управления состоянием интерфейса до сложных алгоритмов обработки данных. Их глубокое понимание позволяет выбирать оптимальные решения для эффективной работы с данными в приложении.