"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Facilite sua vida com composições de conjuntos

Facilite sua vida com composições de conjuntos

Publicado em 2024-11-09
Navegar:245

Finalmente! Quando Set foi introduzido no passado, ele já melhorou nossas vidas. Conseguimos gerar listas exclusivas com facilidade, mas também tivemos melhor desempenho na localização e configuração de itens nessas listas.

Isso foi ótimo, mas ainda faltavam várias coisas que outras línguas tinham. E isso é verdade, porque éramos. Com os novos métodos de composição adicionados ao Set em 2024, finalmente poderemos fazer união, interseção, diferença e muito mais com chamadas simples.

Sem mais delongas, vamos começar.

Diferença

Retorna um novo Conjunto contendo elementos que existem no primeiro Conjunto, mas não no segundo.

Make your life easier with Set Compositions

Exemplo: você deseja ver quais usuários visitaram o site nesta semana e não visitaram no mês passado.

Como usar?

const thisWeekUsers = new Set([1, 2, 3, 4]);
const lastMonthUsers = new Set([3, 4, 5, 6]);

const newUsers = thisWeekUsers.difference(lastMonthUsers);

console.log(newUsers); // Set(2) { 1, 2 }

Como faríamos isso no passado?

const thisWeekUsers = [1, 2, 3, 4];
const lastMonthUsers = [3, 4, 5, 6];

let newUsers = thisWeekUsers.filter(x => !lastMonthUsers.includes(x));

console.log(newUsers); // (2) [1,2]

Saiba mais em: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/difference


Interseção

Retorna um novo Conjunto apenas com os valores que estão presentes em ambos os Conjuntos.

Make your life easier with Set Compositions

Exemplo: você está adicionando um pacote de e-books ao carrinho, mas já tinha alguns desses livros lá.

Como usar?

const booksBundle = new Set([1, 2, 3, 4]);
const cart = new Set([3, 4, 5, 6]);

const booksToAdd = booksBundle.intersection(cart);

console.log(booksToAdd); // Set(2) { 3, 4 }

Como faríamos isso no passado?

const booksBundle = [1, 2, 3, 4];
const cart = [3, 4, 5, 6];

const booksToAdd = booksBundle.filter(book => cart.includes(book));

console.log(booksToAdd); // (2) [3, 4]

Saiba mais em: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/intersection


Diferença Simétrica

Retorna um novo Conjunto com os valores que não se repetem em nenhum dos grupos.

Make your life easier with Set Compositions

Exemplo: verificar itens com excesso de estoque entre lojas para verificar quais itens podem ser trocados.

Como usar?

const firstStore = new Set([1, 2, 3, 4]);
const secondStore = new Set([3, 4, 5, 6]);

const overstockedItems = firstStore.symmetricDifference(secondStore);

console.log(overstockedItems); // Set(4) { 1, 2, 5, 6 }

Como faríamos isso no passado?

const firstStore = [1, 2, 3, 4];
const secondStore = [3, 4, 5, 6];

const allItems = [firstStore, secondStore].flat();
const overstockedItems = allItems.filter(item => {
  return !firstStore.includes(item) || !secondStore.includes(item);
});

console.log(overstockedItems); // (4) [1, 2, 5, 6]

Saiba mais em: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/symmetricDifference


União

Retorna um novo Set com os valores de ambos os grupos, mas sem repetir nenhum valor.

Make your life easier with Set Compositions

Exemplo: você e seu amigo querem mesclar playlists, mas algumas músicas são iguais.

Como usar?

const yourPlaylist = new Set([1, 2, 3, 4]);
const friendPlaylist = new Set([3, 4, 5, 6]);

const mergedPlaylist = yourPlaylist.union(friendPlaylist);

console.log(mergedPlaylist); // Set(6) { 1, 2, 3, 4, 5, 6 }

Como faríamos isso no passado?

const yourPlaylist = [1, 2, 3, 4];
const friendPlaylist = [3, 4, 5, 6];

const mergedPlaylist = new Set([yourPlaylist, friendPlaylist].flat());

console.log(mergedPlaylist); // (6) [1, 2, 3, 4, 5, 6]

Saiba mais em: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/union


É disjunto de?

Ele retorna um booleano. É verdadeiro se ambos Set não tiverem valores em comum, e falso se tiverem pelo menos um valor em comum.

Make your life easier with Set Compositions

Exemplo: Veja que existem produtos que fazem parte de outros grupos.

Como usar?

const electronics = new Set([1, 2, 3, 4]);
const furniture = new Set([3, 4, 5, 6]);
const groceries = new Set(['apple']);

console.log(electronics.isDisjointFrom(furniture)); // false
console.log(electronics.isDisjointFrom(groceries)); // true

Como faríamos isso no passado?

const electronics = [1, 2, 3, 4];
const furniture = [3, 4, 5, 6];
const groceries = ['apple'];

function isDisjoint(array1, array2) {
  return array1.every(item => !array2.includes(item));
}

console.log(isDisjoint(electronics, furniture)); // false
console.log(isDisjoint(electronics, groceries)); // true

Saiba mais em: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/isDisjointFrom


É superconjunto/subconjunto de?

Essas duas funções são muito semelhantes. Ambos retornam um valor booleano e são opostos diretos. Superconjunto retornará verdadeiro se o Conjunto for um superconjunto de outro, e Subconjunto retornará verdadeiro se o Conjunto for um subconjunto de outro.

Estou juntando essas funções porque saber a resposta de uma delas é suficiente para conhecer a outra. Um conjunto só pode ser um superconjunto de um conjunto de subconjuntos.

Make your life easier with Set Compositions

Exemplo: Entenda se os usuários fazem parte de um grupo de empresas.

Como usar?

const itDepartment = new Set([1, 2, 3, 4]);
const genZFromToronto = new Set([3, 4]);

console.log(itDepartment.isSupersetOf(genZFromToronto)); // true
console.log(genZFromToronto.isSubsetOf(itDepartment)); // true

Como faríamos isso no passado?

const itDepartment = [1, 2, 3, 4];
const genZFromToronto = [3, 4];

console.log(genZFromToronto.every(item => itDepartment.includes(item))); // true

Saiba mais em:

  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/isSupersetOf
  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/isSubsetOf

Agora você está pronto Não sinto muito para usá-lo em seu projeto!

Deixe-me saber se você também está animado com isso, outro recurso ou se deseja ver algo mais abordado. Até a próxima o/

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/klauskpm/make-your-life-easier-with-set-compositions-45j?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3