개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.03 19:27

arr.indexOf(value) 관련 질문

목록
  • Flutter전문가 2일 전 2025.06.03 19:27
  • 4
    1
제가 학습 중인 자바스크립트 배열 메서드인 arr.indexOf(value)에 대해 궁금합니다.

arr.indexOf(value) 메서드는 배열 내에 특정 값(value)을 찾을 때, 몇 번째 인덱스에 위치하는지 알려주는 메서드입니다.

다음과 같은 코드를 작성했습니다.
javascript

let arr = [1, 2, 3, 4, 5];

console.log(arr.indexOf(3));  // 2

console.log(arr.indexOf(6));  // -1



위 코드는 3이 배열 내에 존재하므로, 2를 출력하고 6은 배열 내에 존재하지 않으므로 -1을 출력합니다.

하지만, 만약에 배열 내에 중복된 값이 존재할 경우, indexOf 메서드는 첫 번째로 발견한 인덱스를 반환합니다.
javascript

let arr = [1, 2, 2, 3, 4];

console.log(arr.indexOf(2));  // 1



이러한 결과를 얻는 이유를 알고 싶습니다.

    댓글목록

    profile_image
    나우호스팅  2일 전



    arr.indexOf(value) 메서드는 배열 내에서 첫 번째로 발견한 value의 인덱스를 반환합니다. 만약 value가 배열 내에 존재하지 않으면 -1을 반환합니다.

    중복된 값이 있는 경우, indexOf 메서드는 첫 번째로 발견한 인덱스를 반환합니다. 예를 들어, let arr = [1, 2, 2, 3, 4]; 에서 indexOf(2)가 호출되면, 첫 번째 2의 인덱스인 1이 반환됩니다.

    이러한 결과는 indexOf 메서드의 기본 동작으로 인해 발생합니다. 만약 중복된 값을 제거하고 싶다면, indexOf 메서드 대신 includes 메서드를 사용하거나 filter 메서드를 사용하여 중복된 값을 제거한 후 indexOf 메서드를 사용하는 방법이 있습니다.

    예를 들어, let arr = [1, 2, 2, 3, 4]; 에서 indexOf(2)가 호출되면, includes 메서드를 사용하여 중복된 값을 제거한 후 indexOf 메서드를 사용하여 두 번째 2의 인덱스를 반환할 수 있습니다.

    includes 메서드는 배열 내에서 value가 존재하는지 여부를 boolean 값으로 반환합니다.

    let arr = [1, 2, 2, 3, 4];
    let index = arr.indexOf(2);
    if (index === -1) {
    index = arr.indexOf(2, index + 1);
    }

    이러한 방법을 사용하여 중복된 값을 제거하고 첫 번째로 발견한 인덱스를 반환할 수 있습니다.

    2025-06-03 19:28

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 25,543건 / 17 페이지

검색

게시물 검색