자바스크립트 배열의 중복된 요소 찾기

자바스크립트에서 배열은 많은 데이터를 저장하고 조작하는 강력한 도구입니다. 때로는 배열에서 중복된 요소를 찾아야 하는 상황이 발생할 수 있습니다. 이러한 요구를 처리하기 위해서는 몇 가지 방법을 사용할 수 있습니다. 이번 글에서는 몇 가지 자바스크립트 함수와 알고리즘을 사용하여 배열에서 중복된 요소를 찾는 방법을 알아보겠습니다.

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.push(arr[i]);
      }
    }
  }
  
  return duplicates;
}

const numbers = [1, 2, 3, 4, 1, 2, 5];
const duplicates = findDuplicates(numbers);
console.log('Duplicates:', duplicates);

위의 코드는 배열을 두 번 순회하면서 중복된 요소를 찾아내고, 그 결과를 duplicates 배열에 저장합니다.

2. Set을 사용한 방법

ES6부터 도입된 Set은 중복된 값을 허용하지 않는 특징을 갖습니다. 이 특징을 활용하여 배열을 Set으로 변환하고, 중복된 값을 제거한 후 다시 배열로 변환하는 방법을 사용할 수 있습니다.

function findDuplicates(arr) {
  const uniqueValues = new Set();
  const duplicates = [];
  
  for(let i = 0; i < arr.length; i++) {
    // Set에 값이 이미 있는 경우, 중복된 값이므로 duplicates 배열에 추가
    if(uniqueValues.has(arr[i])) {
      duplicates.push(arr[i]);
    } else {
      // Set에 값이 없는 경우, uniqueValues에 추가
      uniqueValues.add(arr[i]);
    }
  }
  
  return duplicates;
}

const numbers = [1, 2, 3, 4, 1, 2, 5];
const duplicates = findDuplicates(numbers);
console.log('Duplicates:', duplicates);

위의 코드에서는 Set 객체를 사용하여 중복된 값을 제거하고, 중복된 값을 duplicates 배열에 저장합니다.

3. 객체를 사용한 방법

마지막으로, 객체를 사용하여 배열에서 중복된 값을 찾는 방법입니다. 이 방법은 배열을 한 번만 순회하여 중복된 값을 확인할 수 있습니다.

function findDuplicates(arr) {
  const frequency = {};
  const duplicates = [];
  
  for(let i = 0; i < arr.length; i++) {
    const value = arr[i];
    // 이미 객체에 존재하는 값이면 duplicates 배열에 추가
    if(frequency[value]) {
      duplicates.push(value);
    } else {
      // 객체에 없는 값은 frequency에 추가
      frequency[value] = true;
    }
  }
  
  return duplicates;
}

const numbers = [1, 2, 3, 4, 1, 2, 5];
const duplicates = findDuplicates(numbers);
console.log('Duplicates:', duplicates);

위의 코드에서는 frequency 객체를 사용하여 이미 존재하는 값인 경우 중복된 값으로 간주하고 duplicates 배열에 추가합니다.

결론

자바스크립트 배열에서 중복된 요소를 찾는 방법은 여러 가지가 있습니다. 글에서는 루프, Set, 객체를 사용하는 방법을 알아보았습니다. 각 방식은 장단점을 갖고 있으므로 상황에 맞게 선택하여 사용하면 됩니다. 중복된 값은 데이터의 정합성을 해칠 수 있으므로 알맞은 방법을 사용하여 중복을 처리하는 것이 중요합니다.