Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що робить Set?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**`Set`** - це вбудована структура даних у JavaScript (з'явилася в ES6), яка зберігає унікальні значення будь-якого типу. **Ключове:** на відміну від масиву, у `Set` не може бути дублікатів, а перевірка наявності елемента (`has()`) виконується швидше, ніж `arr.includes()`.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## Що таке `Set` > `Set` - це вбудована структура даних у JavaScript (з'явилася в ES6), > яка зберігає **унікальні значення будь-якого типу**. Тобто в `Set` не може бути елементів, що повторюються. ## Приклад: ```javascript const set = new Set(); set.add(1); set.add(2); set.add(2); // дублікат - не додасться set.add('hello'); console.log(set); // Set(3) {1, 2, 'hello'} console.log(set.size); // 3 ``` ## Основні методи | Метод / властивість | Що робить | Приклад | | --- | --- | --- | | `add(value)` | Додає елемент | `set.add(10)` | | `has(value)` | Перевіряє наявність | `set.has(10)` -> `true` | | `delete(value)` | Видаляє елемент | `set.delete(10)` | | `clear()` | Очищає Set | `set.clear()` | | `size` | Кількість елементів | `set.size` | ## Перебір ```javascript const set = new Set(['a', 'b', 'c']); for (const value of set) { console.log(value); } // a // b // c set.forEach(v => console.log(v)); // те саме ``` ## Приклад: видалення дублікатів з масиву ```javascript const numbers = [1, 2, 2, 3, 3, 4]; const unique = [...new Set(numbers)]; console.log(unique); // [1, 2, 3, 4] ``` > Дуже поширений і практичний прийом - `new Set()` + spread `...` = "прибрати дублікати". ## Приклад: перетин множин ```javascript const a = new Set([1, 2, 3]); const b = new Set([2, 3, 4]); const intersection = new Set([...a].filter(x => b.has(x))); console.log(intersection); // Set(2) {2, 3} ``` ## Приклад: різниця множин ```javascript const difference = new Set([...a].filter(x => !b.has(x))); console.log(difference); // Set(1) {1} ``` ## Чим `Set` відрізняється від масиву | Особливість | `Array` | `Set` | | --- | --- | --- | | Дублікати | Можна | Не можна | | Порядок | Упорядкований | Упорядкований (за вставкою) | | Перевірка наявності | `arr.includes(x)` (O(n)) | `set.has(x)` (O(1)) | | Видалення елемента | Повільно (`splice`) | Швидко (`delete()`) | | Індексація | Є (`arr[0]`) | Немає | | Розмір | `arr.length` | `set.size` | | Перебір | `for`, `forEach`, `map` | `for...of`, `forEach` | ## Коли використовувати `Set` Використовуй `Set`, якщо: - потрібно зберігати **лише унікальні значення**; - важливо **швидко перевіряти наявність** елементів; - не потрібна індексація (позиції не важливі); - потрібно легко **видаляти чи очищати** елементи. ## Коротко | Що | Опис | | --- | --- | | **Тип** | Колекція унікальних значень | | **Ключові методи** | `.add()`, `.has()`, `.delete()`, `.clear()` | | **Розмір** | `size` | | **Перетворення в масив** | `[...set]` | | **Головна відмінність від масиву** | Лише унікальні елементи і швидкі операції пошуку | Простіше кажучи: > **Масив** - список, де можуть бути повторення. > **Set** - множина, де кожен елемент унікальний. > `Set` ідеальний для фільтрації, пошуку та роботи з унікальними даними.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.