Menu
Coddy logo textTech

Sottoinsiemi e sovrainsiemi

Fa parte della sezione Logica e flusso del percorso JavaScript di Coddy. Lezione 40 di 65.

Un insieme A è un sottoinsieme dell'insieme B se ogni elemento di A è anche un elemento di B. Viceversa, B è un sovrainsieme di A se contiene tutti gli elementi di A.

Due insiemi sono uguali se contengono esattamente gli stessi elementi. Ad esempio, creiamo alcuni test:

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]);

Funzione per verificare se setA è un sottoinsieme di setB:

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

Funzione per verificare se setA è un sovrainsieme di setB:

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

Funzione per verificare se due insiemi sono uguali:

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

Verifica della relazione di sottoinsieme:

// A è un sottoinsieme di B? 
isSubset(setA, setB) // true
// B è un sottoinsieme di A? 
isSubset(setB, setA) // false
// D è un sottoinsieme di B? 
isSubset(setD, setB) // false

Verifica della relazione di sovrainsieme:

// B è un sovrainsieme di A?
isSuperset(setB, setA) // true
// A è un sovrainsieme di B?
isSuperset(setA, setB) // false

Verifica dell'uguaglianza:

// A è uguale a C?
areEqual(setA, setC) // true
// A è uguale a B?
areEqual(setA, setB) // false
// A è uguale a D?
areEqual(setA, setD) // false
challenge icon

Sfida

Facile

Crea una funzione chiamata analyzeSetRelations che accetti due array come parametri: arr1 e arr2. La funzione dovrebbe convertire gli array in insiemi e restituire un oggetto con le seguenti proprietà:

  • isSubset: un valore booleano che indica se set1 è un sottoinsieme di set2
  • isSuperset: un valore booleano che indica se set1 è un sovrainsieme di set2
  • isEqual: un valore booleano che indica se set1 e set2 contengono esattamente gli stessi elementi

Provalo tu

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

    // Usa .every() e .has() per verificare le relazioni tra insiemi
    let isSubset = false;   // TODO: verifica se ogni elemento di set1 è presente in set2
    let isSuperset = false; // TODO: verifica se ogni elemento di set2 è presente in set1
    let isEqual = false;    // TODO: verifica se entrambi gli insiemi hanno la stessa dimensione e isSubset è true

    return {
        isSubset: isSubset,
        isSuperset: isSuperset,
        isEqual: isEqual
    };
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore JavaScript online