Menu
Coddy logo textTech

Subconjuntos e Superconjuntos

Parte da seção Lógica & Fluxo do Journey de JavaScript da Coddy — lição 40 de 65.

Um conjunto A é um subconjunto do conjunto B se cada elemento de A também for um elemento de B. Inversamente, B é um superconjunto de A se contiver todos os elementos de A.

Dois conjuntos são iguais se contiverem exatamente os mesmos elementos. Por exemplo, vamos criar alguns testes:

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

Função para verificar se setA é um subconjunto de setB:

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

Função para verificar se setA é um superconjunto de setB:

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

Função para verificar se dois conjuntos são iguais:

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

Testando a relação de subconjunto:

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

Testando a relação de superconjunto:

// B é superconjunto de A?
isSuperset(setB, setA) // true
// A é superconjunto de B?
isSuperset(setA, setB) // false

Testando igualdade:

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

Desafio

Fácil

Crie uma função chamada analyzeSetRelations que recebe dois arrays como parâmetros: arr1 e arr2. A função deve converter os arrays em conjuntos (sets) e retornar um objeto com as seguintes propriedades:

  • isSubset: um booleano indicando se set1 é um subconjunto de set2
  • isSuperset: um booleano indicando se set1 é um superconjunto de set2
  • isEqual: um booleano indicando se set1 e set2 possuem exatamente os mesmos elementos

Folha de consulta

Um conjunto A é um subconjunto do conjunto B se cada elemento de A também for um elemento de B. Inversamente, B é um superconjunto de A se contiver todos os elementos de A. Dois conjuntos são iguais se contiverem exatamente os mesmos elementos.

Verifique se setA é um subconjunto de setB:

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

Verifique se setA é um superconjunto de setB:

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

Verifique se dois conjuntos são iguais:

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

Experimente você mesmo

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

    // Use .every() e .has() para verificar as relações entre os conjuntos
    let isSubset = false;   // TODO: verificar se cada elemento de set1 existe em set2
    let isSuperset = false; // TODO: verificar se cada elemento de set2 existe em set1
    let isEqual = false;    // TODO: verificar se ambos os conjuntos têm o mesmo tamanho e se isSubset é verdadeiro

    return {
        isSubset: isSubset,
        isSuperset: isSuperset,
        isEqual: isEqual
    };
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo