Set. В чём особенность? Какие свойства и методы есть? Как перебрать?

👨‍💻 Frontend Developer 🟠 Может встретиться 🎚️ Средний
#JavaScript #Коллекции #База JS

Краткий ответ

Set — это коллекция уникальных значений, где каждое значение может встречаться только один раз. В отличие от массивов, Set автоматически удаляет дубликаты и позволяет быстро проверять наличие элементов.

const set = new Set([1, 2, 2, 3, 3, 4]);
console.log(set); // Set { 1, 2, 3, 4 } (дубликаты удалены)
console.log(set.size); // 4
console.log(set.has(2)); // true

Полный ответ

Set — как коробка для писем, где каждое письмо может лежать только в одном экземпляре. Если вы пытаетесь положить такое же письмо, оно просто не добавляется! Это удобно, когда нужно хранить только уникальные значения! 📮

Особенности Set

Главные особенности Set:

Простые примеры

Создание и основные методы

// Создание Set
const numberSet = new Set();
 
// Добавление элементов
numberSet.add(1);
numberSet.add(2);
numberSet.add(2); // не добавится — дубликат!
 
console.log(numberSet); // Set { 1, 2 }
console.log(numberSet.size); // 2
 
// Проверка наличия
console.log(numberSet.has(1)); // true
console.log(numberSet.has(3)); // false
 
// Удаление
numberSet.delete(1);
console.log(numberSet.has(1)); // false

Удаление дубликатов

// Удаление дубликатов из массива
const arrayWithDuplicates = [1, 2, 2, 3, 3, 4];
const uniqueArray = [...new Set(arrayWithDuplicates)];
console.log(uniqueArray); // [1, 2, 3, 4]

Свойства и методы Set

Основные свойства

const set = new Set(['a', 'b', 'c']);
console.log(set.size); // 3 (количество элементов)

Основные методы

const set = new Set();
 
// add(value) — добавляет значение
set.add('значение');
 
// has(value) — проверяет наличие значения
const exists = set.has('значение');
 
// delete(value) — удаляет значение
set.delete('значение');
 
// clear() — очищает весь Set
set.clear();
 
// size — свойство, возвращает количество элементов
console.log(set.size);

Как перебрать Set

С помощью for…of

const set = new Set(['яблоко', 'банан', 'апельсин']);
 
// Перебор значений
for (const value of set) {
  console.log(value);
}

С помощью forEach

const set = new Set([1, 2, 3]);
 
set.forEach(value => {
  console.log(value);
});

Когда использовать Set

Для хранения уникальных значений

// Список уникальных тегов
const tags = new Set();
tags.add('JavaScript');
tags.add('React');
tags.add('JavaScript'); // не добавится
console.log(tags); // Set { 'JavaScript', 'React' }

Для быстрой проверки наличия

// Быстрая проверка, есть ли значение
const allowedRoles = new Set(['админ', 'модератор', 'пользователь']);
 
function checkRole(role) {
  return allowedRoles.has(role);
}
 
console.log(checkRole('админ')); // true
console.log(checkRole('гость')); // false

Частые ошибки

Путаница с массивами

// ❌ Ошибка — думать, что Set как массив
const set = new Set([1, 2, 3]);
// set[0]; // undefined! У Set нет индексов
// set.length; // undefined! У Set нет length
 
// ✅ Правильно — использовать методы Set
console.log(set.size); // 3
console.log(set.has(1)); // true

Забыть new при создании

// ❌ Ошибка — забыли new
// const set = Set(); // TypeError!
 
// ✅ Правильно
const set = new Set();

Простые правила

  1. Уникальность — каждое значение только один раз 🎯
  2. Автоматическое удаление дубликатов — при добавлении повторов 🚫
  3. Быстрая проверка — метод [has()] работает быстро ⚡
  4. Нет индексов — нельзя получить элемент по индексу как в массиве 🚫
  5. Перебор — можно перебирать с for…of и forEach 🔄

Set — отличный выбор, когда нужно хранить только уникальные значения и быстро проверять их наличие! 💪


Хотите больше статей для подготовки к собеседованиям? Подписывайтесь на EasyAdvice, добавляйте сайт в закладки и совершенствуйтесь каждый день 💪