๐ ํ๋ก๊ทธ๋๋ฐ์์ ์งํฉ ์ด๋ก ์ ํ: ๋ฐ์ดํฐ์ ํฉ์งํฉ๊ณผ ์ฐจ์งํฉ์ ์ํ Lodash ํ์ฉ
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.