findIndex() 함수란?
JavaScript의 findIndex() 메서드는 배열에서 주어진 조건(콜백 함수)을 만족하는 첫 번째 요소의 인덱스를 반환합니다. 조건을 만족하는 요소가 하나도 없다면 -1을 반환합니다.
이 메서드는 find()와 비슷하지만, 요소 자체 대신 해당 요소의 인덱스(위치)를 반환한다는 점이 다입니다.
findIndex() 기본 문법
arr.findIndex(callback(element[, index[, array]])[, thisArg])
- callback: 각 요소를 검사할 함수. 조건에 맞으면 true를 반환해야 합니다.
- thisArg(선택): 콜백 함수 실행 시 this로 사용할 값.
예제 코드
다음 예제는 버튼을 클릭하면 동물 배열에서 'lion'의 인덱스를 찾아 화면에 표시합니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>findIndex 예제</title>
<style>
body {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}
.findIndex {
font-size: 20px;
font-weight: 500;
}
</style>
</head>
<body>
<h1>JavaScript Array findIndex() 예제</h1>
<div class="findIndex"></div>
<button class="findArr">CLICK HERE</button>
<h3>위 버튼을 클릭하면 배열에서 lion의 인덱스가 출력됩니다.</h3>
<script>
function findLion(animal) {
return animal === "lion";
}
let fillEle = document.querySelector(".findIndex");
let arr = ["cow", "lion", "bull", "tiger"];
fillEle.innerHTML = arr;
document.querySelector(".findArr").addEventListener("click", () => {
fillEle.innerHTML = arr.findIndex(findLion);
});
</script>
</body>
</html>실행 결과
페이지를 처음 열면 배열의 전체 내용이 화면에 표시됩니다.

'CLICK HERE' 버튼을 클릭하면 조건을 만족하는 첫 번째 요소인 'lion'의 인덱스가 반환되어 화면에 표시됩니다.

배열 ["cow", "lion", "bull", "tiger"]에서 'lion'은 두 번째 요소이므로 결과값은 1(인덱스는 0부터 시작)입니다.
findIndex() 사용 시 참고 사항
- 조건을 만족하는 요소가 없으면
-1을 반환합니다. - 콜백 함수는 배열의 각 요소에 대해 순서대로 한次씩 호출되며, 조건이 만족되는 즉시 검색이 중단됩니다.
- 빈 배열에 대해 호출하면 콜백이 실행되지 않고 바로
-1을 반환합니다. - 원본 배열은 변경되지 않습니다.