intersectionBy
intersection, comparando por una clave calculada en vez de por igualdad de valor.
Lección
La misma forma que differenceBy,
con la condición opuesta: intersectionBy(f, iterable1, iterable2)
recorre iterable2 y conserva cada elemento
cuya clave f sí aparezca entre las claves
f de iterable1, sin duplicados según esa clave.
f se aplica a ambos iterables, así que los dos deben
compartir el mismo tipo de elemento A — solo el tipo de la
clave de comparación B puede diferir de A.
Es la opción natural para dos listas de registros completos que comparten
un campo identificador: una lista de SKUs «destacados» y un catálogo de
productos, una lista de IDs de usuarios activos y una lista de objetos de
usuario completos, y así sucesivamente. intersection no es
más que intersectionBy((a) => a, iterable1, iterable2).
No existe método de cadena; llama a la función data-first o a su
contraparte asíncrona. El marcador de concurrencia de
.concurrent(n) se aplica a iterable2,
exactamente igual que con intersectionAsync.
Demo 1 · Fundamentos
Demo 2 · Asíncrono, con concurrencia
Pruébalo tú
Ejercicio: usa intersectionBy (con la clave 'sku')
para encontrar los productos que están en oferta.
intersection — la versión por igualdad de valor ·
differenceBy — excluye por una clave calculada compartida en su lugar ·
uniqBy — elimina duplicados de un solo iterable por clave ·
compress — filtra con una máscara booleana paralela