Ответ
Set — это встроенная коллекция в JavaScript, которая хранит только уникальные значения любого типа (примитивы, объекты, функции). Основное отличие от массива — автоматическое устранение дубликатов и быстрая проверка наличия элемента.
Ключевые особенности:
- Порядок элементов соответствует порядку добавления.
- Нет индексов, доступ через методы:
add(),has(),delete(),clear(). - Итерируем с помощью
for...ofили методовforEach(),keys(),values(),entries().
Пример использования в Node.js:
const uniqueTags = new Set();
uniqueTags.add('nodejs');
uniqueTags.add('javascript');
uniqueTags.add('nodejs'); // Не добавится, дубликат
console.log(uniqueTags.size); // 2
console.log(uniqueTags.has('javascript')); // true
// Удаление дубликатов из массива — частая практика
const duplicateIds = [101, 102, 101, 103, 102];
const uniqueIds = [...new Set(duplicateIds)];
console.log(uniqueIds); // [101, 102, 103]
// Использование в контексте валидации
function validateUniqueEmails(emails) {
const emailSet = new Set(emails);
if (emailSet.size !== emails.length) {
throw new Error('Обнаружены дублирующиеся email-адреса');
}
return Array.from(emailSet);
}
Почему это важно: Set обеспечивает алгоритмическую сложность O(1) для операций добавления, удаления и проверки наличия, что делает его значительно эффективнее аналогичных операций с массивом (includes() имеет O(n)).
Видео-ответы
▶
▶