[javascript] 배열 순회 시 요소 중복된 값 찾기

자바스크립트에서 배열을 순회하면서 중복된 값이 있는지 찾아야 할 때가 종종 있습니다. 이번 블로그 포스트에서는 이와 관련된 방법들을 알아보겠습니다.

방법 1: 이중 반복문을 사용하여 확인하는 방법

가장 간단한 방법은 이중 반복문을 사용하여 배열의 모든 요소를 비교하는 것입니다. 다음은 이 방법을 사용한 예입니다.

const arr = [1, 2, 3, 4, 3, 5, 6, 2];
let hasDuplicates = false;

for (let i = 0; i < arr.length; i++) {
  for (let j = i + 1; j < arr.length; j++) {
    if (arr[i] === arr[j]) {
      hasDuplicates = true;
      break;
    }
  }
}

console.log(hasDuplicates); // true

하지만 이 방법은 배열의 크기가 커지면 성능상의 문제가 발생할 수 있으므로, 더 효율적인 방법을 알아보겠습니다.

방법 2: Set을 사용하여 확인하는 방법

Set은 중복된 값을 허용하지 않는 특징을 가지고 있습니다. 따라서 배열을 Set으로 변환한 후, 배열의 크기와 Set의 크기를 비교하면 중복된 값이 있는지 확인할 수 있습니다.

const arr = [1, 2, 3, 4, 3, 5, 6, 2];
const set = new Set(arr);

const hasDuplicates = arr.length !== set.size;

console.log(hasDuplicates); // true

Set은 중복된 값을 허용하지 않기 때문에, 중복된 값을 제거하고 싶을 때에도 유용하게 사용될 수 있습니다.

방법 3: 객체를 사용하여 확인하는 방법

마지막으로, 객체를 사용하여 배열의 값들을 확인하는 방법입니다. 이 방법은 배열의 요소들을 객체의 속성으로 저장하고, 이미 알려진 값인지 여부를 확인합니다.

const arr = [1, 2, 3, 4, 3, 5, 6, 2];
const obj = {};
let hasDuplicates = false;

for (let i = 0; i < arr.length; i++) {
  if (obj[arr[i]]) {
    hasDuplicates = true;
    break;
  }
  obj[arr[i]] = true;
}

console.log(hasDuplicates); // true

이 방법은 이중 반복문을 사용하는 방법보다는 성능상 이점이 있지만, 값이 숫자나 문자열인 경우에만 사용할 수 있습니다.

마무리

배열을 순회하면서 중복된 값을 찾는 방법에 대해 알아보았습니다. 이중 반복문을 사용하는 방법이 가장 간단하지만, 성능상 문제가 발생할 수 있으므로 Set이나 객체를 사용하는 방법을 더 선호할 수 있습니다. 어떤 방법을 선택하든, 자신의 프로젝트에 맞게 골라 사용하면 됩니다.