Set.prototype.isDisjointFrom()
Метод isDisjointFrom() (не перетинається з) примірників Set приймає множину та повертає булеве значення, яке вказує, чи не має поточна множина спільних елементів із заданою множиною.
Синтаксис
isDisjointFrom(other)
Параметри
otherОб'єкт
Set, або множиноподібний об'єкт.
Повернене значення
true, якщо поточна множина не має зі множиною other спільних елементів, і false у протилежному випадку.
Опис
Дві множини не перетинаються, якщо вони не мають спільних елементів. У математичному записі:
А за допомогою діаграми Венна:
Метод isDisjointFrom() приймає як параметр other множиноподібні об'єкти. Він вимагає, щоб значення this було справжнім примірником Set, оскільки безпосередньо отримує базові дані, збережені в this, не закликаючи жодний користувацький код. Крім цього, його поведінка залежить від розмірів this і other:
- Якщо у
thisбільше елементів, ніжother.size, то він ітерує поother, викликаючи її методkeys(), і якщо будь-який елементotherприсутній уthis, то метод повертаєfalse(і закриває ітераторkeys(), викликавши його методreturn()). В іншому випадку він повертаєtrue. - Інакше – він ітерує по елементах
this, і повертаєfalse, якщо будь-який елементeвthisзмушуєother.has(e)повернути істинне значення. В іншому випадку він повертаєtrue.
У зв'язку з такою реалізацією, ефективність isDisjointFrom() здебільшого залежить від розміру меншої множини серед this та other (виходячи з припущення, що до множини можна звернутися за сублінійний час).
Приклади
Застосування isDisjointFrom()
Множина квадратів цілих чисел (<20) не перетинається з множиною простих чисел (<20), оскільки кожне ціле число можна розкласти на добуток двох цілих чисел, а 1 не вважається простим числом:
const primes = new Set([2, 3, 5, 7, 11, 13, 17, 19]);
const squares = new Set([1, 4, 9, 16]);
console.log(primes.isDisjointFrom(squares)); // true
Множина квадратів цілих чисел (<20) перетинається з множиною складених чисел (<20), оскільки всі непарні квадрати є складеними числами за визначенням:
const composites = new Set([4, 6, 8, 9, 10, 12, 14, 15, 16, 18]);
const squares = new Set([1, 4, 9, 16]);
console.log(composites.isDisjointFrom(squares)); // false