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.
Retorna um novo Conjunto contendo elementos que existem no primeiro Conjunto, mas não no segundo.
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
Retorna um novo Conjunto apenas com os valores que estão presentes em ambos os Conjuntos.
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
Retorna um novo Conjunto com os valores que não se repetem em nenhum dos grupos.
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
Retorna um novo Set com os valores de ambos os grupos, mas sem repetir nenhum valor.
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
Ele retorna um booleano. É verdadeiro se ambos Set não tiverem valores em comum, e falso se tiverem pelo menos um valor em comum.
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
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.
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:
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/
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