Skip to content

Commit

Permalink
Добавляет доку про метод Set.isSupersetOf() (#5463)
Browse files Browse the repository at this point in the history

Co-authored-by: Tatiana Fokina <[email protected]>
Co-authored-by: Polina Gurtovaia <[email protected]>
  • Loading branch information
3 people authored Sep 29, 2024
1 parent 018ff40 commit 2c3ee0a
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 1 deletion.
1 change: 1 addition & 0 deletions js/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ groups:
- set-intersection
- set-symmetric-difference
- set-is-subset-of
- set-is-superset-of
- name: "Обработка исключений"
items:
- try-catch
Expand Down
2 changes: 1 addition & 1 deletion js/set-is-subset-of/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ console.log(set2.isSubsetOf(set1))

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

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

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

Expand Down
59 changes: 59 additions & 0 deletions js/set-is-superset-of/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
---
title: "`.isSupersetOf()`"
description: Метод сравнения коллекций, который позволяет определить включает текущая коллекция все элементы другой коллекции или нет.
baseline:
- group: set-methods
features:
- javascript.builtins.Set.isSupersetOf
authors:
- vitya-ne
related:
- js/set
- js/set-is-subset-of
- js/array-some
tags:
- doka
---

## Кратко

Метод `isSupersetOf()` сравнивает текущую коллекцию с другой и возвращает `true`, если текущая коллекция включает в себя все элементы другой коллекции, и `false` — если нет.

## Пример

У Софии и Надежды большие личные библиотеки. София хочет доказать, что её коллекция включает все романы Набокова, которые есть в коллекции Надежды. В этом ей поможет метод `isSupersetOf()`.

У нас есть два массива строк. Определим, входят ли все элементы второго массива также в первый. Для решения задачи создадим [`Set-объекты`](/js/set/) из массивов и сравним их, используя метод `isSupersetOf()`:

```js
const booksOfSonya = [ 'Дар', 'Подвиг', 'Защита Лужина', 'Отчаяние' ]
const booksOfNadya = [ 'Подвиг', 'Защита Лужина', 'Дар' ]

const set1 = new Set(booksOfSonya)
const set2 = new Set(booksOfNadya)

console.log(set1.isSupersetOf(set2))
// true
console.log(set2.isSupersetOf(set1))
// false
```

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

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

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

<aside>

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

</aside>

Метод `isSupersetOf()` возвращает булевое значение как результат сравнения коллекций.

## Как понять

Сравнение коллекций — часто встречающаяся задача. Метод `isSupersetOf()` упрощает её решение и избавляет от необходимости писать код обхода и сравнения.

Не путайте метод `isSupersetOf()` с методом [`isSubsetOf()`](/js/set-is-subset-of/), который решает обратную задачу и проверяет, что все элементы текущей коллекции содержатся в другой. Поддержка `isSupersetOf()` в основных браузерах и в [Node.js](/tools/nodejs/) появилась в 2024 году. Если попробуете использовать метод в более ранних версиях, получите ошибку.

0 comments on commit 2c3ee0a

Please sign in to comment.