Menu
Coddy logo textTech

Subconjuntos y superconjuntos

Parte de la sección Lógica y Flujo del Journey de JavaScript de Coddy — lección 40 de 65.

Un conjunto A es un subconjunto del conjunto B si cada elemento de A es también un elemento de B. Por el contrario, B es un superconjunto de A si contiene todos los elementos de A.

Dos conjuntos son iguales si contienen exactamente los mismos elementos. Por ejemplo, vamos a crear algunas pruebas:

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

Función para comprobar si setA es un subconjunto de setB:

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

Función para comprobar si setA es un superconjunto de setB:

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

Función para comprobar si dos conjuntos son iguales:

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

Probando la relación de subconjunto:

// ¿Es A un subconjunto de B? 
isSubset(setA, setB) // true
// ¿Es B un subconjunto de A? 
isSubset(setB, setA) // false
// ¿Es D un subconjunto de B? 
isSubset(setD, setB) // false

Probando la relación de superconjunto:

// ¿Es B un superconjunto de A?
isSuperset(setB, setA) // true
// ¿Es A un superconjunto de B?
isSuperset(setA, setB) // false

Comprobando la igualdad:

// ¿A es igual a C?
areEqual(setA, setC) // true
// ¿A es igual a B?
areEqual(setA, setB) // false
// ¿A es igual a D?
areEqual(setA, setD) // false
challenge icon

Desafío

Fácil

Crea una función llamada analyzeSetRelations que tome dos arrays como parámetros: arr1 y arr2. La función debe convertir los arrays en conjuntos (sets) y devolver un objeto con las siguientes propiedades:

  • isSubset: un booleano que indica si set1 es un subconjunto de set2
  • isSuperset: un booleano que indica si set1 es un superconjunto de set2
  • isEqual: un booleano que indica si set1 y set2 tienen exactamente los mismos elementos

Hoja de referencia

Un conjunto A es un subconjunto del conjunto B si cada elemento de A es también un elemento de B. Por el contrario, B es un superconjunto de A si contiene todos los elementos de A. Dos conjuntos son iguales si contienen exactamente los mismos elementos.

Comprueba si setA es un subconjunto de setB:

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

Comprueba si setA es un superconjunto de setB:

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

Comprueba si dos conjuntos son iguales:

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

Pruébalo tú mismo

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

    // Usa .every() y .has() para comprobar las relaciones entre conjuntos
    let isSubset = false;   // TODO: comprobar si cada elemento de set1 existe en set2
    let isSuperset = false; // TODO: comprobar si cada elemento de set2 existe en set1
    let isEqual = false;    // TODO: comprobar si ambos conjuntos tienen el mismo tamaño y isSubset es verdadero

    return {
        isSubset: isSubset,
        isSuperset: isSuperset,
        isEqual: isEqual
    };
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo