Set.prototype.intersection()
Метод intersection()
(перетин) примірників Set
приймає множину і повертає нову множину, що містить елементи, присутні як у поточній множині, так і в переданій.
Синтаксис
intersection(other)
Параметри
other
Об'єкт
Set
, або множиноподібний об'єкт.
Повернене значення
Новий об'єкт Set
, що містить елементи, присутні як у поточній множині, так і в множині other
.
Опис
У математичному записі перетин визначається так:
А за допомогою діаграми Венна
Метод intersection()
приймає як параметр other
множиноподібні об'єкти. Він вимагає, щоб значення this
було справжнім примірником Set
, оскільки безпосередньо отримує базові дані, збережені в this
, не закликаючи жодний користувацький код. Крім цього, його поведінка залежить від розмірів this
і other
:
- Якщо у
this
більше елементів, ніжother.size
, то він ітерує поother
, викликаючи її методkeys()
, і створює нову множину з усіх елементів, які він видає, і які також присутні вthis
. - Інакше – він ітерує по всіх елементах у
this
, і створює нову множину з усіх елементівe
, присутніх уthis
, які змушуютьother.has(e)
повернути істинне значення.
У зв'язку з такою реалізацією, ефективність intersection()
здебільшого залежить від розміру меншої множини серед this
і other
(виходячи з припущення, що до множин можна звертатися за сублінійний час). Порядок елементів у поверненій множині такий самий, як у меншої серед this
і other
.
Приклади
Застосування intersection()
Наступний приклад обчислює перетин між множиною непарних чисел (<10) і множиною квадратів цілих чисел (<10). Результатом є множина непарних чисел, які є квадратами цілих чисел
const odds = new Set([1, 3, 5, 7, 9]);
const squares = new Set([1, 4, 9]);
console.log(odds.intersection(squares)); // Set(2) { 1, 9 }