Menu
Coddy logo textTech

Подмножества и надмножества

Часть раздела Логика и поток путешествия по JavaScript на Coddy — урок 40 из 65.

Множество A является подмножеством множества B, если каждый элемент множества A также является элементом множества B. И наоборот, B является надмножеством A, если оно содержит все элементы A.

Два множества являются равными, если они содержат одни и те же элементы. Например, давайте создадим несколько тестов:

const setA = new Set([1, 2, 3]);
const setB = new Set([1, 2, 3, 4, 5]);
const setC = new Set([1, 2, 3]);
const setD = new Set([6, 7, 8]);

Функция для проверки того, является ли setA подмножеством setB:

function isSubset(setA, setB) {
  return [...setA].every(element => setB.has(element));
}

Функция для проверки того, является ли setA надмножеством setB:

function isSuperset(setA, setB) {
  return isSubset(setB, setA);
}

Функция для проверки равенства двух множеств:

function areEqual(setA, setB) {
  return setA.size === setB.size && isSubset(setA, setB);
}

Проверка отношения подмножества:

// Является ли A подмножеством B? 
isSubset(setA, setB) // true
// Является ли B подмножеством A? 
isSubset(setB, setA) // false
// Является ли D подмножеством B? 
isSubset(setD, setB) // false

Проверка отношения надмножества:

// B является надмножеством A?
isSuperset(setB, setA) // true
// A является надмножеством B?
isSuperset(setA, setB) // false

Проверка равенства:

// A равно C?
areEqual(setA, setC) // true
// A равно B?
areEqual(setA, setB) // false
// A равно D?
areEqual(setA, setD) // false
challenge icon

Задание

Легко

Создайте функцию с названием analyzeSetRelations, которая принимает два массива в качестве параметров: arr1 и arr2. Функция должна преобразовать массивы в множества и вернуть объект со следующими свойствами:

  • isSubset: логическое значение, указывающее, является ли set1 подмножеством set2
  • isSuperset: логическое значение, указывающее, является ли set1 надмножеством set2
  • isEqual: логическое значение, указывающее, содержат ли set1 и set2 абсолютно одинаковые элементы

Шпаргалка

Множество A является подмножеством множества B, если каждый элемент A также является элементом B. И наоборот, B является надмножеством A, если оно содержит все элементы A. Два множества равны, если они содержат одни и те же элементы.

Проверить, является ли setA подмножеством setB:

function isSubset(setA, setB) {
  return [...setA].every(element => setB.has(element));
}

Проверить, является ли setA надмножеством setB:

function isSuperset(setA, setB) {
  return isSubset(setB, setA);
}

Проверить, равны ли два множества:

function areEqual(setA, setB) {
  return setA.size === setB.size && isSubset(setA, setB);
}

Попробуйте сами

function analyzeSetRelations(arr1, arr2) {
    let set1 = new Set(arr1);
    let set2 = new Set(arr2);

    // Используйте .every() и .has() для проверки отношений множеств
    let isSubset = false;   // TODO: проверить, существует ли каждый элемент set1 в set2
    let isSuperset = false; // TODO: проверить, существует ли каждый элемент set2 в set1
    let isEqual = false;    // TODO: проверить, имеют ли оба множества одинаковый размер и является ли isSubset истинным

    return {
        isSubset: isSubset,
        isSuperset: isSuperset,
        isEqual: isEqual
    };
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и поток