difference
첫 번째 이터러블에 없는 두 번째 이터러블의 원소를 반환합니다 — 인자 순서가 중요합니다.
강의
시그니처를 주의 깊게 보세요. difference(iterable1, iterable2)는
iterable2를 순회하면서
오직 iterable1에 없는 원소만 내보냅니다
(uniq처럼 중복은 제거됩니다). iterable1은
오직 포함 여부를 검사하는 집합으로만 쓰입니다 — 그 자신의 원소는
결과에 절대 나타나지 않으며, 내부의 중복도 아무 영향이 없습니다.
이 순서는 대칭이 아닙니다. 인자를 바꾸면 완전히 다른(그리고 대개
길이도 다른) 결과가 나옵니다. 기억하기 좋은 방법은
iterable1을 "제외 목록", iterable2를
"걸러 낼 목록"으로 생각하는 것입니다.
내부 구현은 differenceBy((a) => a, iterable1, iterable2)입니다 —
값 동등성 대신 계산된 키로 비교해야 한다면
differenceBy를 참고하세요.
difference에는 체인 메서드가 없습니다. data-first 함수(그리고
그 비동기 짝)로만 존재합니다. 비동기 쪽에서는
.concurrent(n)이 붙인 동시성 표시가
iterable2에 적용됩니다 —
iterable1의 제외 집합은 결과가 흘러나오기 전에 항상
먼저 전부 소진됩니다.
데모 1 · 기본과 인자 순서
데모 2 · 비동기, 그리고 동시성
직접 해 보기
연습: difference로 allTasks 중 아직
completed에 없는 작업을 찾아보세요.
differenceBy — 계산된 키로 비교하는 같은 동작 ·
intersection — 반대로 공통 원소만 남기기 ·
uniq — 이터러블 하나에서 중복 제거 ·
includes — 이터러블 하나에 포함되는지 검사