Ответ
В JavaScript (и, соответственно, в Node.js) для хранения коллекций данных доступны несколько структур. Выбор зависит от конкретной задачи:
-
Массивы (Array) — для упорядоченных списков.
const tasks = ['Рефакторинг', 'Написать тесты']; tasks.push('Деплой'); -
Объекты (Object) — для коллекций пар ключ-значение, где ключ — строка или символ. Идеально для структурированных данных.
const config = { port: 3000, host: 'localhost', logging: true }; -
Map — для коллекций, где ключом может быть любой тип (объект, функция). Сохраняет порядок вставки.
const userMetadata = new Map(); const user = { id: 123 }; userMetadata.set(user, { lastLogin: new Date() }); -
Set — для хранения уникальных значений любого типа.
const uniqueTags = new Set(); uniqueTags.add('nodejs'); uniqueTags.add('javascript'); uniqueTags.add('nodejs'); // Не добавится, дубликат -
WeakMap и WeakSet — аналоги Map и Set, но с "слабыми" ссылками на ключи (объекты). Это позволяет сборщику мусора удалять объекты-ключи, если на них нет других ссылок. Полезны для приватного хранения метаданных или кэширования без утечек памяти.
const privateData = new WeakMap(); class User { constructor(name) { privateData.set(this, { secretToken: crypto.randomBytes(16) }); } getToken() { return privateData.get(this).secretToken; } }
В Node.js для работы с большими данными также часто используют буферы (Buffer) или TypedArray, но это уже не коллекции в классическом понимании.