🚀 O Poder da Teoria dos Conjuntos na Programação: Lodash como Aliado na União e Diferença de Dados
Source: Dev.to
O Conceito de Conjunto (Set)
Vamos ver como o Lodash nos ajuda a aplicar isso na prática, comparando-o com o código JavaScript “puro”.
Exemplo 1: União (Combinando Listas sem Duplicatas)
Objetivo: Obter uma lista única de todos os usuários.
const A = [1, 2, 3];
const B = [3, 4, 5];
// Usamos o Set nativo para desduplicar
const uniao = [...new Set([...A, ...B])];
// Resultado: [1, 2, 3, 4, 5]
Com Lodash (_.union)
const A = [1, 2, 3];
const B = [3, 4, 5];
const uniao = _.union(A, B);
// Resultado: [1, 2, 3, 4, 5]
Ganho: O Lodash reduz a operação complexa de concatenação e desduplicação a uma única função, tornando a intenção do código imediata. A legibilidade é máxima.
Exemplo 2: Diferença (Encontrando Exclusividades)
JavaScript Normal (Manual)
const A = [1, 2, 3, 6];
const B = [3, 4, 5];
// Usamos filter e includes, com complexidade O(N*M)
const diferenca = A.filter(item => !B.includes(item));
// Resultado: [1, 2, 6]
Com Lodash (_.difference)
const A = [1, 2, 3, 6];
const B = [3, 4, 5];
const diferenca = _.difference(A, B);
// Resultado: [1, 2, 6]
Ganho: Além da simplicidade sintática, _.difference costuma ser implementado de forma mais eficiente (utilizando hash maps internamente) do que a solução filter + includes manual, oferecendo melhor performance em grandes conjuntos de dados. Ele transforma uma lógica imperativa (filter) em uma declaração de conjunto (difference).
Conclusão: Por Que Mudar a Mentalidade?
Adotar a mentalidade da Teoria dos Conjuntos ao manipular arrays em JavaScript simplifica o código, melhora a legibilidade e pode trazer ganhos de performance. Bibliotecas como o Lodash fornecem funções prontas que expressam claramente operações de união, diferença, interseção e outras, permitindo que você escreva código mais declarativo e focado na lógica de negócio.