자바스크립트 두 배열의 차집합 구하기

배열을 다루는 작업은 프로그래밍에서 흔히 사용되는 작업입니다. 자바스크립트에서도 배열을 다루는 다양한 내장 함수를 제공하고 있습니다. 이번 블로그 포스트에서는 자바스크립트를 사용하여 두 배열의 차집합을 구하는 방법에 대해 알아보겠습니다.

차집합이란?

먼저, 차집합이 무엇인지 이해해야 합니다. 차집합은 두 집합 중에서 한 집합에만 속하는 원소들의 집합을 의미합니다. 다시 말해, 한 배열에만 있는 원소들로 이루어진 배열을 차집합이라고 할 수 있습니다.

방법 1: filter() 함수 사용하기

const array1 = [1, 2, 3, 4, 5];
const array2 = [4, 5, 6, 7, 8];

const difference = array1.filter(x => !array2.includes(x));
console.log(difference); // [1, 2, 3]

위의 예제에서는 filter() 함수를 사용하여 차집합을 구하는 방법을 보여줍니다. filter() 함수는 배열의 각 원소에 대해 콜백 함수를 실행하고, 콜백 함수의 반환 값이 true인 원소들로 이루어진 새로운 배열을 반환합니다.

여기서는 array1 배열의 각 원소에 대해 array2 배열에 포함되어 있지 않은지를 확인하는 조건을 만족하는 원소들만 반환하도록 콜백 함수를 작성하였습니다. 따라서 difference 변수에는 array1 배열에만 속하는 원소들로 이루어진 새로운 배열이 할당됩니다.

방법 2: reduce() 함수 사용하기

const array1 = [1, 2, 3, 4, 5];
const array2 = [4, 5, 6, 7, 8];

const difference = array1.reduce((result, current) => {
  if (!array2.includes(current)) {
    result.push(current);
  }
  return result;
}, []);

console.log(difference); // [1, 2, 3]

위의 예제에서는 reduce() 함수를 사용하여 차집합을 구하는 방법을 보여줍니다. reduce() 함수는 배열의 각 원소에 대해 콜백 함수를 실행하고, 콜백 함수의 반환 값을 누적하여 최종 결과를 반환하는 역할을 합니다.

여기서는 콜백 함수 내에서 array2 배열에 현재 원소가 포함되어 있는지를 확인하고, 포함되어 있지 않으면 결과 배열에 추가하는 로직을 구현하였습니다. 초기값으로 빈 배열([])을 제공하여 결과 배열을 초기화하였습니다.

결론

자바스크립트에서 두 배열의 차집합을 구하는 방법에 대해 알아보았습니다. filter() 함수나 reduce() 함수를 사용하여 간단하게 구현할 수 있습니다. 이러한 배열 조작 기능을 잘 활용하면 복잡한 작업을 간단하게 처리할 수 있으므로, 자바스크립트에서 배열을 다룰 때 유용하게 활용할 수 있습니다.