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