diff --git a/js/set-intersection/images/set-intersection.png b/js/set-intersection/images/set-intersection.png new file mode 100644 index 0000000000..64a40986c9 Binary files /dev/null and b/js/set-intersection/images/set-intersection.png differ diff --git a/js/set-intersection/index.md b/js/set-intersection/index.md new file mode 100644 index 0000000000..14f2c5d08e --- /dev/null +++ b/js/set-intersection/index.md @@ -0,0 +1,56 @@ +--- +title: "`.intersection()`" +description: "Метод для сравнения двух коллекций, который возвращает коллекцию общих элементов." +baseline: + - group: set-methods + features: + - javascript.builtins.Set.intersection +authors: + - vitya-ne +related: + - js/set + - js/map + - js/array-filter +tags: + - doka +--- + +## Кратко + +Метод `intersection()` сравнивает текущую коллекцию с другой и возвращает новую, состоящую из элементов, входящих в обе коллекции. + +В математике это называется пересечением двух множеств. Пересечение множеств A и B — это множество, которое состоит из элементов, входящих как в множество А, так и во множество B. Это можно выразить формулой: + +``` +A ∩ B = { x | x ∈ A ∧ x ∈ B } +``` + +![Пересечение двух множеств](images/set-intersection.png) + +## Пример + +Допустим, у нас есть две коллекции чисел. Необходимо сравнить эти коллекции и получить общие, встречающиеся в обеих коллекциях, числа: + +```js +const num1 = new Set([42, 4, 69, 37, 2]) +const num2 = new Set([1, 2, 3, 4]) + +const inter = num1.intersection(num2) + +console.log(inter) +// Set(2) { 2, 4 } +``` + +## Как пишется + +Метод `intersection()` принимает один обязательный аргумент — объект, содержащий коллекцию для вычисления пересечения. Если аргумент не указан, будет брошено исключение `TypeError`. + +Аргументом может быть как [`Set`-объект](/js/set/), так и `Set`-подобный объект, например, [`Map`](/js/map/). + +Метод `intersection()` возвращает новый `Set`-объект, содержащий пересечение исходной и указанной коллекций. Итерация при сравнении элементов проводится по коллекции меньшего размера. Порядок элементов будет соответствовать порядку элементов в коллекции меньшего размера. Если у коллекций нет общих элементов, метод вернёт пустой `Set`-объект. + +## Как понять + +Метод `intersection()` позволяет получить общие элементы для двух коллекций без дополнительного кода обхода и сравнения. + +Поддержка метода `intersection()` в основных браузерах и в [Node.js](/tools/nodejs/) появилась в 2024 году. Попытка использовать `intersection()` в более ранних версиях, приведёт к ошибке.