[Javascript] 두 배열 중복 찾기
April 06, 2024
두개의 배열이 공통적으로 갖고 있는 중복 값을 찾는 방법에 대해서 알아보겠습니다. 집합으로 얘기하면, 두 배열의 교집합이 됩니다.
1. filter()를 이용한 방법
array.filter(함수)
는 array의 모든 요소에 대해서 함수를 수행하며, 함수의 결과가 true인 요소들만 배열에 담아 리턴합니다.
아래와 같이 두 배열의 중복 값을 찾을 수 있습니다.
arr1.filter((item) => arr2.includes(item))
: arr1이 갖고 있는 요소가 arr2에도 있는 요소들만 배열로 리턴
function findDuplicates(arr1, arr2) {
return arr1.filter((item) => arr2.includes(item));
}
let array1 = [1, 2, 3, 4, 5];
let array2 = [3, 4, 5, 6, 7];
let duplicates = findDuplicates(array1, array2);
console.log(duplicates);
Output:
[ 3, 4, 5 ]
2. for문을 이용한 방법
Array.includes(value)
는 배열에 value가 있을 때 true를 리턴합니다.
이것을 이용하여 아래와 같이 두개의 배열을 for문으로 순회하면서, 어떤 요소에 대해서 두개의 배열이 함께 갖고 있는지 확인할 수 있습니다. 중복 값은 배열에 저장하고, 이 배열을 리턴하여 중복 값을 찾을 수 있습니다.
function findDuplicates(arr1, arr2) {
let duplicates = [];
for (let item of arr1) {
if (arr2.includes(item)) {
duplicates.push(item);
}
}
return duplicates;
}
let array1 = [1, 2, 3, 4, 5];
let array2 = [3, 4, 5, 6, 7];
let duplicates = findDuplicates(array1, array2);
console.log(duplicates);
Output:
[ 3, 4, 5 ]
3. 두 배열의 중복 값 제거
아래와 같이 filter()를 사용하여, 두 배열의 중복 값을 제거할 수도 있습니다.
아래 예제에서 removeDuplicates(array1, array2)
는 array1에서 array2의 중복 값이 제거된 배열이 리턴됩니다.
arr1.filter((item) => !arr2.includes(item))
: arr1의 요소가 arr2에 포함되어있지 않은 값들만 배열로 리턴
function removeDuplicates(arr1, arr2) {
return arr1.filter((item) => !arr2.includes(item));
}
let array1 = [1, 2, 3, 4, 5];
let array2 = [3, 4, 5, 6, 7];
let result = removeDuplicates(array1, array2);
console.log(result);
Output:
[ 1, 2 ]