자바스크립트 배열의 중복 값을 가진 요소 찾기

자바스크립트에서 배열을 다루다보면 중복된 값을 가진 요소를 찾아야 하는 경우가 종종 발생합니다. 이번 글에서는 자바스크립트를 사용하여 배열에서 중복된 값을 찾는 방법을 알아보겠습니다.

방법 1: 반복문을 사용하여 중복된 값 찾기

가장 간단한 방법은 반복문을 사용하여 배열을 순회하면서 중복된 값을 찾는 것입니다.

아래 예제 코드에서는 배열을 순회하면서 각 요소가 이미 등장한 적이 있는지 확인하는 방식으로 중복된 값을 찾습니다.

function findDuplicates(arr) {
  let duplicates = [];
  
  for (let i = 0; i < arr.length; i++) {
    for (let j = i + 1; j < arr.length; j++) {
      if (arr[i] === arr[j] && !duplicates.includes(arr[i])) {
        duplicates.push(arr[i]);
      }
    }
  }
  
  return duplicates;
}

const numbers = [1, 2, 3, 4, 5, 2, 4, 6];
const duplicates = findDuplicates(numbers);
console.log(duplicates); // [2, 4]

이 방법은 간단하고 이해하기 쉽지만, 중복된 요소가 많은 배열에서는 효율성이 떨어질 수 있습니다.

방법 2: 객체를 활용하여 중복된 값 찾기

더 효율적인 방법은 객체를 활용하여 중복된 값들을 추적하는 것입니다.

각 요소를 객체의 프로퍼티로 사용하고, 해당 프로퍼티가 이미 존재한다면 중복된 값으로 간주합니다. 이렇게 중복된 값을 객체에 추가하면 중복된 값들을 얻을 수 있습니다.

function findDuplicates(arr) {
  let duplicates = {};
  
  for (let i = 0; i < arr.length; i++) {
    if (duplicates[arr[i]] === undefined) {
      duplicates[arr[i]] = 1;
    } else {
      duplicates[arr[i]]++;
    }
  }
  
  return Object.keys(duplicates).filter(key => duplicates[key] > 1);
}

const numbers = [1, 2, 3, 4, 5, 2, 4, 6];
const duplicates = findDuplicates(numbers);
console.log(duplicates); // [2, 4]

이 방법은 반복문을 한 번만 사용하여 배열을 순회하므로, 배열의 크기에 상관없이 일관된 성능을 보장합니다. 또한, 중복된 값을 추적하고 관리하는 과정에서 객체를 사용하기 때문에 중복된 값들을 쉽게 찾을 수 있습니다.

결론

자바스크립트 배열에서 중복된 값을 찾는 방법을 알아보았습니다.

간단한 반복문을 활용하는 방법과 객체를 활용하는 방법 두 가지를 소개했으니, 상황에 맞게 적절한 방법을 선택하여 사용하시면 됩니다.

중복된 값이 있는지 확인해야 할 때는 이러한 방법들을 사용하여 효율적으로 문제를 해결할 수 있습니다.