두 개 이상의 배열에서 차집합, 교집합, 배타적 논리합 등의 계산을 해야 할 때가 있다.
let array1 = [3,6,9,12];
let array2 = [2,4,6,8,10,12];
다음과 같은 array1, array2가 있다고 가정합니다.
# 차집합
array1.filter(x => !array2.includes(x));
filter함수에서 array2에 포함되지 않은 값을 필터링하여 차집합을 구할 수 있다.
# 교집합
array1.filter(x => array2.includes(x));
filter함수에서 array2에 포함된 값을 필터링하여 교집합을 구할 수 있다.
# 배타적 논리합
array1.filter(x => !array2.includes(x))
.concat(array2.filter(x => !array1.includes(x)));
filter로 각각 구해준 다음 concat으로 두 배열을 합해주어 구한다.
# 합집합
바로 concat을 해버리면 중복된 값이 들어갈 수 있기 때문에, 교집합을 한 번 빼준다.
array1.concat(array2.filter(x => array1.includes(x)))
교집합을 빼주는게 귀찮다면, 다음에 포스팅할 Javascript Set 편을 참고!
728x90
'WEB > JAVASCRIPT' 카테고리의 다른 글
[jquery] validation plugin 사용하기 (0) | 2023.12.18 |
---|---|
공휴일 API - 공공데이터 포털에서 공휴일 데이터 조회 -2. API사용 (0) | 2023.11.09 |
공휴일 API - 공공데이터 포털에서 공휴일 데이터 조회 -1. API신청 (0) | 2023.11.03 |
[JS] 전화번호에 자동으로 '-' 붙이는 정규식 (0) | 2023.01.05 |
[JS] 변수 타입 확인하기 - typeof, constructor (0) | 2022.09.14 |