자바스크립트 배열 교집합이란?
두 개 이상의 배열에 공통으로 포함된 요소들을 찾는 것을 배열 교집합(array intersection)이라고 합니다. 자바스크립트에서는 별도의 라이브러리 없이 기본 내장 메서드만으로 간단하게 구현할 수 있습니다.
먼저 다음과 같은 두 개의 배열이 있다고 가정해 보겠습니다.
var firstNamesArray=["John","David","Bob","Sam","Carol"]; var secondNamesArray=["Mike","Carol","Adam","David"];
filter()와 includes()로 교집합 구하는 방법
배열 교집합을 구하는 가장 쉽고 간결한 방법은 filter()와 includes() 메서드를 함께 사용하는 것입니다. filter()가 첫 번째 배열의 각 요소를 순회하고, includes()가 해당 요소가 두 번째 배열에 존재하는지 확인합니다. 전체 코드는 다음과 같습니다.
예제 코드
var firstNamesArray=["John","David","Bob","Sam","Carol"];
var secondNamesArray=["Mike","Carol","Adam","David"];
var intersectionOfArray=[];
intersectionOfArray=firstNamesArray.filter(v =>
secondNamesArray.includes(v));
console.log("Intersection of two array=");
console.log(intersectionOfArray);위 프로그램을 실행하려면 터미널에서 다음 명령어를 입력합니다.
node fileName.js
여기서는 파일 이름이 demo141.js라고 가정하겠습니다.
실행 결과
프로그램을 실행하면 아래와 같은 출력 결과를 확인할 수 있습니다.
PS C:\Users\Amit\JavaScript-code> node demo141.js Intersection of two array= [ 'David', 'Carol' ]
코드 동작 원리
firstNamesArray.filter(v => secondNamesArray.includes(v)) 구문은 다음 과정으로 작동합니다.
1. filter()가 첫 번째 배열의 요소를 하나씩 순회합니다.
2. 각 요소에 대해 includes()가 두 번째 배열에 해당 값이 있는지 검사합니다.
3. 조건이 참인 요소만 새로운 배열에 담겨 반환됩니다.
따라서 두 배열 모두에 존재하는 'David'와 'Carol'만 결과로 출력됩니다. 이 방법은 코드가 짧고 직관적일 뿐만 아니라, 원본 배열을 변경하지 않고 새로운 배열을 반환하기 때문에 안전하게 사용할 수 있습니다.