Що нового в JavaScript: досліджуємо методи множин для порівняння об’єктів, схожих на множини

pic

Вступ до нових методів 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(): Перевіряє, чи не мають дві множини спільних елементів.

Переваги цих методів

  1. Покращена читабельність: Спрощує виконання поширених операцій порівняно з використанням ручних циклів або власної логіки.
  2. Ефективність коду: Оптимізована реалізація для операцій з множинами, що забезпечує кращу продуктивність.
    3.
    Зручність використання: Уніфікований та інтуїтивно зрозумілий API для порівняння та маніпулювання об'єктами, схожими на множини.

Реальні приклади використання

Ці методи можуть бути застосовані в різних сценаріях, таких як:

  • Фільтрація наборів даних у додатках.
  • Визначення спільних переваг або виключень у рекомендательных системах.
  • Порівняння прав доступу між ролями користувачів.

Висновок

Додавання цих нових методів до об'єкта Set є значним вдосконаленням, яке робить JavaScript більш потужною мовою для маніпулювання даними. Незалежно від того, чи працюєте ви з простими колекціями, чи виконуєте складні операції, ці методи спрощують ваш робочий процес і покращують досвід розробника.

Що ви думаєте про ці оновлення? Використовували ви їх у своїх проектах? Поділіться своїми думками! 🚀

Перекладено з: What’s New in JavaScript: Exploring Set Methods for Comparing Set-like Objects

Leave a Reply

Your email address will not be published. Required fields are marked *