Вступ до нових методів Set
До прототипу Set
були додані наступні нові методи:
Set.prototype.intersection()
Set.prototype.union()
Set.prototype.difference()
Set.prototype.isSubsetOf()
Set.prototype.isSupersetOf()
Set.prototype.symmetricDifference()
Ці методи спрощують складні операції з множинами та роблять код більш зрозумілим і підтримуваним.
Операції з множинами в дії
Давайте розглянемо кожен з цих нових методів з прикладами.
1. Перетин
Метод intersection()
повертає нову множину, що містить елементи, які є спільними для обох множин.
const setA = new Set([1, 2, 3, 4]);
const setB = new Set([3, 4, 5, 6]);
const intersectionSet = setA.intersection(setB);
console.log(intersectionSet); // Вивід: Set { 3, 4 }
Візуалізація
Set A Set B Перетин 1, 2, 3, 4 3, 4, 5, 6 3, 4
2. Об’єднання
Метод union()
поєднує елементи з обох множин, видаляючи дублікати.
const unionSet = setA.union(setB);
console.log(unionSet); // Вивід: Set { 1, 2, 3, 4, 5, 6 }
Візуалізація
Set A Set B Об’єднання 1, 2, 3, 4 3, 4, 5, 6 1, 2, 3, 4, 5, 6
3. Різниця
Метод difference()
повертає нову множину з елементами, що є в першій множині, але відсутні в другій.
const differenceSet = setA.difference(setB);
console.log(differenceSet); // Вивід: Set { 1, 2 }
Візуалізація
Set A Set B Різниця (A — B) 1, 2, 3, 4 3, 4, 5, 6 1, 2
4. Підмножина та надмножина
isSubsetOf()
Перевіряє, чи всі елементи множини містяться в іншій множині.
console.log(new Set([1, 2]).isSubsetOf(setA)); // Вивід: true
isSupersetOf()
Перевіряє, чи містить множина всі елементи іншої множини.
console.log(setA.isSupersetOf(new Set([1, 2]))); // Вивід: true
5. Симетрична різниця
Метод symmetricDifference()
повертає елементи, які присутні в одній з множин, але не в обох.
const symmetricDiffSet = setA.symmetricDifference(setB);
console.log(symmetricDiffSet); // Вивід: Set { 1, 2, 5, 6 }
Візуалізація
Set A Set B Симетрична різниця 1, 2, 3, 4 3, 4, 5, 6 1, 2, 5, 6
6. Перевірка на розрізнення
Метод isDisjointFrom()
перевіряє, чи не мають дві множини спільних елементів. Він повертає true
, якщо множини не перетинаються (тобто їх перетин порожній), і false
в іншому випадку.
Приклад:
const setA = new Set([1, 2, 3]);
const setB = new Set([4, 5, 6]);
const setC = new Set([3, 4, 5]);
console.log(setA.isDisjointFrom(setB)); // Вивід: true
console.log(setA.isDisjointFrom(setC)); // Вивід: false
Пояснення:
setA
таsetB
не мають спільних елементів, отже, вони розрізняються.setA
таsetC
мають спільний елемент3
, тому вони не розрізняються.
Візуалізація
| Set A | Set B | Чи розрізняються? |
| — — — — — — — — -| — — — — — — — — | — — — — — — — -|
| 1, 2, 3 | 4, 5, 6 | ✅ Так |
| 1, 2, 3 | 3, 4, 5 | ❌ Ні |
Set A Set B Чи розрізняються? 1, 2, 3 4, 5, 6 ✅ Так 1, 2, 3 3, 4, 5 ❌ Ні
Підсумовуючи, ось нові методи Set
, додані до JavaScript, та їхні призначення:
intersection()
: Знаходить спільні елементи між двома множинами.union()
: Об’єднує всі унікальні елементи з двох множин.difference()
: Повертає елементи, що є в першій множині, але відсутні в другій.symmetricDifference()
: Знаходить елементи, що є в одній множині, але не в обох.isSubsetOf()
: Перевіряє, чи є множина підмножиною іншої множини.isSupersetOf()
: Перевіряє, чи є множина надмножиною іншої множини.isDisjointFrom()
: Перевіряє, чи не мають дві множини спільних елементів.
Переваги цих методів
- Покращена читабельність: Спрощує виконання поширених операцій порівняно з використанням ручних циклів або власної логіки.
- Ефективність коду: Оптимізована реалізація для операцій з множинами, що забезпечує кращу продуктивність.
3.
Зручність використання: Уніфікований та інтуїтивно зрозумілий API для порівняння та маніпулювання об'єктами, схожими на множини.
Реальні приклади використання
Ці методи можуть бути застосовані в різних сценаріях, таких як:
- Фільтрація наборів даних у додатках.
- Визначення спільних переваг або виключень у рекомендательных системах.
- Порівняння прав доступу між ролями користувачів.
Висновок
Додавання цих нових методів до об'єкта Set
є значним вдосконаленням, яке робить JavaScript більш потужною мовою для маніпулювання даними. Незалежно від того, чи працюєте ви з простими колекціями, чи виконуєте складні операції, ці методи спрощують ваш робочий процес і покращують досвід розробника.
Що ви думаєте про ці оновлення? Використовували ви їх у своїх проектах? Поділіться своїми думками! 🚀
Перекладено з: What’s New in JavaScript: Exploring Set Methods for Comparing Set-like Objects