Podzbiory i nadzbiory
Część sekcji Logika i przepływ programu ścieżki JavaScript w Coddy. Lekcja 40 z 65.
Zbiór A jest podzbiorem zbioru B, jeśli każdy element zbioru A jest również elementem zbioru B. Z kolei B jest nadzbiorem A, jeśli zawiera wszystkie elementy zbioru A.
Dwa zbiory są równe, jeśli zawierają dokładnie te same elementy. Na przykład utwórzmy kilka testów:
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]);Funkcja sprawdzająca, czy setA jest podzbiorem setB:
function isSubset(setA, setB) {
return [...setA].every(element => setB.has(element));
}Funkcja sprawdzająca, czy setA jest nadzbiorem setB:
function isSuperset(setA, setB) {
return isSubset(setB, setA);
}Funkcja sprawdzająca, czy dwa zbiory są równe:
function areEqual(setA, setB) {
return setA.size === setB.size && isSubset(setA, setB);
}Testowanie relacji podzbioru:
// Czy A jest podzbiorem B?
isSubset(setA, setB) // true
// Czy B jest podzbiorem A?
isSubset(setB, setA) // false
// Czy D jest podzbiorem B?
isSubset(setD, setB) // falseTestowanie relacji nadzbioru:
// Czy B jest nadzbiorem A?
isSuperset(setB, setA) // true
// Czy A jest nadzbiorem B?
isSuperset(setA, setB) // falseTestowanie równości:
// Czy A jest równe C?
areEqual(setA, setC) // true
// Czy A jest równe B?
areEqual(setA, setB) // false
// Czy A jest równe D?
areEqual(setA, setD) // falseWyzwanie
ŁatwyUtwórz funkcję o nazwie analyzeSetRelations, która przyjmuje dwie tablice jako parametry: arr1 i arr2. Funkcja powinna przekształcić tablice w zbiory i zwrócić obiekt o następujących właściwościach:
isSubset: wartość logiczna wskazująca, czyset1jest podzbioremset2isSuperset: wartość logiczna wskazująca, czyset1jest nadzbioremset2isEqual: wartość logiczna wskazująca, czyset1iset2zawierają dokładnie te same elementy
Spróbuj swoich sił
function analyzeSetRelations(arr1, arr2) {
let set1 = new Set(arr1);
let set2 = new Set(arr2);
// Użyj .every() i .has(), aby sprawdzić relacje między zbiorami
let isSubset = false; // TODO: sprawdź, czy każdy element set1 należy do set2
let isSuperset = false; // TODO: sprawdź, czy każdy element set2 należy do set1
let isEqual = false; // TODO: sprawdź, czy oba zbiory mają tę samą liczbę elementów i czy isSubset ma wartość true
return {
isSubset: isSubset,
isSuperset: isSuperset,
isEqual: isEqual
};
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Napisy w praktyce
Podstawy napisówIterowanie po napisachLiterały szablonoweMetody napisówPodsumowanie – mistrz napisów4JSON, część 2
Iterowanie po JSONZagnieżdżony JSONOpcjonalne łańcuchowanie w JSONPłytka i głęboka kopiaPowtórka — sklep rowerowyPowtórka — Układ Słoneczny7System zarządzania biblioteką
Omówienie projektuDodawanie książek10Zarządzanie systemem festiwalowym
Przegląd projektuDodawanie filmów i miejsc2Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DZagnieżdżone pętle z tablicami 2DPowtórka — tablice 2DDodawanie i odejmowanie macierzyTablice nieregularneTablice 3D i większeTypowe wzorce tablic 2DPowtórka — wszystko o tablicach5Zbiory — część 1
Czym jest zbiór?Iterowanie po zbiorachDodawanie elementuUsuwanie elementuSprawdzanie, czy element istniejeRozmiar i sprawdzanie, czy zbiór jest pustyKopiowanie i czyszczeniePodsumowanie — podstawy zbiorów8Ciekawe zagadnienia dotyczące tablic
Destrukturyzacja tablicSkładnia spread w tablicachRzadkie tablicePodsumowanie – warsztaty z tablic3JSON część 1
Czym jest JSON?Sprawdzanie, czy klucz istniejeMetody obiektówOperator spread — część 1Operator spread — część 2Usuwanie kluczyPodsumowanie — manipulowanie kluczami w JSONPoćwicz samodzielnie: Kompilator JavaScript online