Подмножества и надмножества
Часть раздела Логика и поток путешествия по 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Задание
ЛегкоСоздайте функцию с названием analyzeSetRelations, которая принимает два массива в качестве параметров: arr1 и arr2. Функция должна преобразовать массивы в множества и вернуть объект со следующими свойствами:
isSubset: логическое значение, указывающее, является лиset1подмножествомset2isSuperset: логическое значение, указывающее, является лиset1надмножествомset2isEqual: логическое значение, указывающее, содержат ли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
};
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и поток
1Строки в деталях
Основы работы со строкамиИтерация по строкамШаблонные литералыМетоды строкИтоги — String Weaver4JSON Часть 2
Итерация по JSONВложенный JSONОпциональная цепочка JSONПоверхностное и глубокое копированиеПовторение — Магазин велосипедовПовторение — Солнечная система7Система управления библиотекой
Обзор проектаДобавление книг10Управление системой фестиваля
Обзор проектаДобавление фильмов и площадок2Многомерные массивы
Основы 2D массивовДоступ к элементам 2D массиваВложенные циклы и 2D массивыПовторение: 2D массивыСложение и вычитание матрицСтупенчатые массивы3D массивы и далееРаспространенные паттерны 2D массивовПовторение: всё о массивах5Множества. Часть 1
Что такое множество?Итерация по множествамДобавление элементаУдаление элементаПроверка наличия элементаРазмер и проверка на пустотуКопирование и очисткаИтоги — Основы множеств8Интересные темы о массивах
Деструктуризация массивовСинтаксис Spread в массивахРазреженные массивыИтоги — Воркшоп по массивам3JSON. Часть 1
Что такое JSON?Проверка наличия ключаМетоды объектовОператор spread. Часть 1Оператор spread. Часть 2Удаление ключейПовторение: манипуляции с ключами JSON6Множества. Часть 2
Математика — Объединение множествМатематика — Пересечение множествМатематика — Разность множествМатематика — Симметрическая разностьПодмножества и надмножестваПовторение — Группировка друзей