Menu
Coddy logo textTech

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) // false

Testowanie relacji nadzbioru:

// Czy B jest nadzbiorem A?
isSuperset(setB, setA) // true
// Czy A jest nadzbiorem B?
isSuperset(setA, setB) // false

Testowanie 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) // false
challenge icon

Wyzwanie

Łatwy

Utwó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, czy set1 jest podzbiorem set2
  • isSuperset: wartość logiczna wskazująca, czy set1 jest nadzbiorem set2
  • isEqual: wartość logiczna wskazująca, czy set1 i set2 zawierają 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
    };
}
quiz iconSprawdź się

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

Poćwicz samodzielnie: Kompilator JavaScript online