intersection
Lo contrario de difference: los elementos del segundo iterable que SÍ aparecen en el primero.
Lección
intersection(iterable1, iterable2) comparte la convención de
orden de argumentos de difference: el resultado recorre
iterable2 y conserva cada elemento (en el
orden de iterable2, sin duplicados) que sí se
encuentre en iterable1. iterable1 se usa
únicamente como conjunto de pertenencia — si intercambias los dos
argumentos obtienes los mismos valores en el sentido de la teoría
de conjuntos, pero el orden real (y de qué colección se colapsan los
duplicados) es distinto, porque cambia la fuente de los elementos
emitidos. Mira la Demo 1.
Por dentro es
intersectionBy((a) => a, iterable1, iterable2) — recurre
directamente a intersectionBy
cuando necesites emparejar por una clave calculada entre dos listas de
registros completos en vez de por igualdad de valor.
No hay método de cadena; llama a la función data-first. En el lado
asíncrono, el marcador de concurrencia de .concurrent(n) se
aplica a iterable2 — iterable1 se consume por
completo de antemano para construir el conjunto de pertenencia.
Demo 1 · Fundamentos & orden de los argumentos
Demo 2 · Asíncrono, con concurrencia
Pruébalo tú
Ejercicio: usa intersection para averiguar cuáles de las
habilidades del candidato son realmente necesarias.
difference — la contraparte de exclusión ·
intersectionBy — empareja por una clave calculada en su lugar ·
uniq — elimina duplicados de un solo iterable ·
includes — comprueba la pertenencia de un único valor