Skip to content

Commit

Permalink
Добавляет доку для метода Set.union() (#5428)
Browse files Browse the repository at this point in the history
Co-authored-by: Mikhail <[email protected]>
Co-authored-by: Svetlana Korobtseva <[email protected]>
  • Loading branch information
3 people authored Jul 12, 2024
1 parent 139cf6c commit acdcc13
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 0 deletions.
Binary file added js/set-union/images/set-union.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
70 changes: 70 additions & 0 deletions js/set-union/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
---
title: "`.union()`"
description: "Метод объединения двух коллекций, который возвращает новую коллекцию с элементами, встречающимися в одной или в обоих коллекциях."
baseline:
- group: set-methods
features:
- javascript.builtins.Set.union
authors:
- vitya-ne
related:
- js/set
- js/map
- js/array-join
tags:
- doka
---

## Кратко

Метод `union()` объединяет текущую коллекцию с другой и возвращает новую, состоящую из элементов, которые есть в любой из коллекций.

В математике это называется объединением двух множеств. Оно описывается так: объединение множеств A и B — это множество, которое состоит из элементов, находящихся в любом из множеств А и B.

Это можно выразить формулой:

```
A ∪ B = { x | x ∈ A ∨ x ∈ B }
```

![Объединение двух множеств](images/set-union.png)

## Пример

В двух последних проектах инженер Фёдор использовал определённый стек технологий. При составлении CV, Фёдор решает перечислить навыки, которыми он теперь обладает. Нужно сравнить две коллекции и получить список технологий, используемых хотя бы в одном из проектов. В этом Фёдору поможет метод `union()`:

```js
const project1 = new Set(['PHP', 'Bash', 'Docker', 'JavaScript', 'CSS'])
const project2 = new Set(['Docker', 'JavaScript', 'Bash', 'Postgres', 'MongoDB'])

const result = project1.union(project2)

console.log(result)
// Set(9) {
// 'PHP',
// 'Bash',
// 'Docker',
// 'JavaScript',
// 'CSS',
// 'Postgres',
// 'MongoDB'
// }

```

## Как пишется

Метод `union()` принимает один обязательный аргумент — объект, содержащий коллекцию для объединения. Если аргумент не указан, будет брошено исключение `TypeError`.

Аргументом может быть как [`Set`-объект](/js/set/), так и `Set`-подобный объект, например, [`Map`](/js/map/).

💡 `Set`-подобный (Set-like) объект должен иметь свойство `size` и методы `has()` и `keys()`. Обычный массив, а также [`WeakSet`]-объект(/js/weak-set/) не являются `Set`-подобными объектами, так как не обладают всеми требуемыми свойствами и методами.

Метод `union()` возвращает новый `Set`-объект, содержащий объединение исходной и указанной коллекций. Порядок элементов будет соответствовать порядку исходной, а затем указанной коллекции.

## Как понять

Метод `union()` позволяет объединять две коллекции элементов без необходимости писать дополнительный код обхода и сравнения.

Поддержка метода `union()` в основных браузерах и в [Node.js](/tools/nodejs/) появилась в 2024 году. Если попробуете использовать метод в более ранних версиях, это приведёт к ошибке.

0 comments on commit acdcc13

Please sign in to comment.