Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript findIndex() 메서드 완벽 정리 – 배열에서 조건에 맞는 요소의 인덱스 찾기

JavaScript findIndex() 메서드란?

JavaScript의 findIndex() 메서드는 배열에서 주어진 조건(콜백 함수)을 통과하는 첫 번째 요소의 인덱스를 반환합니다. 만약 어떤 요소도 조건을 만족하지 않으면 -1이 반환됩니다.

findIndex()는 조건에 맞는 요소를 발견하는 즉시 배열 순회를 중단하기 때문에, 대용량 배열에서도 효율적으로 동작한다는 장점이 있습니다.

문법(Syntax)

array.findIndex(function(currentValue, index, arr), thisValue)

매개변수 설명

  • currentValue : 현재 처리 중인 배열 요소의 값 (필수)
  • index : 현재 처리 중인 요소의 인덱스 (선택 사항)
  • arr : findIndex()가 호출된 배열 객체 자체 (선택 사항)
  • thisValue : 콜백 함수 내부에서 this로 사용할 값 (선택 사항)

예제 1 : 최고 랭크 플레이어의 인덱스 찾기

다음은 400점 이상의 점수를 가진 플레이어, 즉 최고 랭크에 해당하는 요소의 인덱스를 찾는 예제입니다.

<!DOCTYPE html>
<html>
<body>
   <h2>랭킹</h2>
   <button onclick="display()">결과 보기</button>
   <p id="demo"></p>
   <p>가장 높은 랭크를 가진 플레이어의 인덱스를 찾습니다.</p>
   <script>
      var points = [100, 150, 200, 250, 300, 400];
      function topRank(points) {
         return points >= 400;
      }
      function display() {
         document.getElementById("demo").innerHTML = "index = "+points.findIndex(topRank);
      }
   </script>
</body>

실행 결과

JavaScript findIndex() 메서드 완벽 정리 – 배열에서 조건에 맞는 요소의 인덱스 찾기

"결과 보기" 버튼을 클릭하면 아래와 같이 인덱스가 화면에 출력됩니다.

JavaScript findIndex() 메서드 완벽 정리 – 배열에서 조건에 맞는 요소의 인덱스 찾기

배열 [100, 150, 200, 250, 300, 400]에서 400 이상인 요소는 마지막 위치에 있으므로 index = 5가 반환됩니다.

예제 2 : 특정 점수를 가진 플레이어의 인덱스 찾기

이번에는 특정 랭크 점수(200점)에 해당하는 플레이어의 인덱스를 찾아보겠습니다.

<!DOCTYPE html>
<html>
<body>
   <h2>랭킹</h2>
   <button onclick="display()">결과 보기</button>
   <p id="demo"></p>
   <p>특정 랭크 점수를 가진 플레이어의 인덱스를 찾습니다.</p>
   <script>
      var points = [100, 150, 200, 250, 300, 400];
      function topRank(points) {
         return points == 200;
      }
      function display() {
         document.getElementById("demo").innerHTML = "index = "+points.findIndex(topRank);
      }
   </script>
</body>

실행 결과

JavaScript findIndex() 메서드 완벽 정리 – 배열에서 조건에 맞는 요소의 인덱스 찾기

위 코드에서 "결과 보기" 버튼을 클릭하면 다음과 같은 결과를 확인할 수 있습니다.

JavaScript findIndex() 메서드 완벽 정리 – 배열에서 조건에 맞는 요소의 인덱스 찾기

200점인 요소는 배열의 세 번째 위치에 있으므로 index = 2가 반환됩니다.

핵심 정리

  • findIndex()는 조건을 만족하는 첫 번째 요소의 인덱스만 반환하고, 이후 요소는 검사하지 않습니다.
  • 조건을 만족하는 요소가 하나도 없으면 -1을 반환합니다.
  • 빈 배열에 대해 호출해도 -1을 반환하며, 원본 배열은 변경되지 않습니다.