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

배열은 자바스크립트에서 데이터를 저장하고 관리하는 데 사용되는 중요한 자료구조입니다. 때로는 배열에서 중복된 값을 가진 요소를 찾는 작업이 필요할 수 있습니다. 이 글에서는 자바스크립트에서 배열에서 중복된 값의 인덱스를 찾는 방법에 대해 알아보겠습니다.

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

function findDuplicateIndexes(arr) {
  const duplicateIndexes = [];

  for (let i = 0; i < arr.length; i++) {
    const currentValue = arr[i];

    for (let j = i + 1; j < arr.length; j++) {
      if (arr[j] === currentValue && !duplicateIndexes.includes(j)) {
        duplicateIndexes.push(j);
      }
    }
  }

  return duplicateIndexes;
}

const array = [1, 2, 3, 4, 5, 2, 6, 7, 8, 8];
const duplicateIndexes = findDuplicateIndexes(array);
console.log(duplicateIndexes); // [5, 8, 9]

위의 코드는 findDuplicateIndexes라는 함수를 사용하여 배열에서 중복된 값의 인덱스를 찾는 방법을 보여줍니다. 우선 빈 배열 duplicateIndexes를 선언합니다. 그런 다음 첫 번째 for 루프를 사용하여 배열의 모든 요소를 반복하면서 현재 요소의 값을 저장합니다.

두 번째 for 루프에서는 현재 요소 이후의 모든 요소와 비교하면서 중복된 값의 인덱스를 찾습니다. 중복된 값이 발견되면 duplicateIndexes 배열에 해당 인덱스를 추가합니다.

마지막으로, findDuplicateIndexes 함수를 호출할 때 테스트용 배열을 전달하고 중복된 값의 인덱스 배열을 반환합니다.

방법 2: 객체를 사용하여 중복 값을 찾기

function findDuplicateIndexes(arr) {
  const duplicateIndexes = [];
  const countMap = {};

  for (let i = 0; i < arr.length; i++) {
    const currentValue = arr[i];

    if (countMap[currentValue] === undefined) {
      countMap[currentValue] = i;
    } else {
      if (!duplicateIndexes.includes(countMap[currentValue])) {
        duplicateIndexes.push(countMap[currentValue]);
      }
      duplicateIndexes.push(i);
    }
  }

  return duplicateIndexes;
}

const array = [1, 2, 3, 4, 5, 2, 6, 7, 8, 8];
const duplicateIndexes = findDuplicateIndexes(array);
console.log(duplicateIndexes); // [5, 8, 9]

위의 코드는 객체를 사용하여 배열에서 중복된 값의 인덱스를 찾는 다른 방법을 보여줍니다. 이 방법은 반복문을 한 번만 사용하여 중복된 값과 해당 인덱스를 저장하기 때문에 더 효율적입니다.

먼저, 빈 배열 duplicateIndexes와 빈 객체 countMap을 선언합니다. 이 객체는 배열의 요소 값을 키로 사용하고 해당 값의 인덱스를 값으로 저장합니다.

반복문을 사용하여 배열의 모든 요소를 반복하면서 현재 요소의 값을 확인합니다. 만약 countMap 객체에 해당 값의 키가 없다면, 현재 인덱스를 해당 값의 인덱스로 저장합니다. 그렇지 않으면 현재 값의 인덱스와 countMap에서 해당 값의 인덱스를 duplicateIndexes 배열에 추가합니다.

마지막으로, findDuplicateIndexes 함수를 호출할 때 테스트용 배열을 전달하고 중복된 값의 인덱스 배열을 반환합니다.

이제 여러분은 자바스크립트 배열에서 중복된 값의 인덱스를 찾는 두 가지 방법을 알게 되었습니다. 프로젝트에서 중복된 값의 처리가 필요한 경우 이러한 방법을 사용하여 문제를 해결할 수 있습니다.