자바스크립트 기본 문법 – 배열 – 배열 메서드 – 8 – findIndex
배열 메서드 ‘findIndex’란?
자바스크립트에서 배열을 다룰 때 유용한 여러 가지 메서드들이 있습니다. 그 중에서도 ‘findIndex’ 메서드는 배열에서 특정한 조건을 만족하는 요소의 인덱스를 찾는 기능을 제공합니다.
‘findIndex’ 메서드 사용 예시
아래의 예시를 통해 ‘findIndex’ 메서드를 이해해 보겠습니다.
const numbers = [10, 20, 30, 40, 50];
const index = numbers.findIndex((number) => number > 30);
console.log(index); // 3
위의 코드에서는 ‘numbers’라는 배열에서 30보다 큰 첫 번째 요소의 인덱스를 찾는 예시입니다. ‘findIndex’ 메서드는 콜백 함수를 인자로 받는데, 이 함수는 배열의 각 요소를 순차적으로 검사하며, 조건을 만족하는 첫 번째 요소를 찾을 때까지 호출됩니다. 이때 콜백 함수의 인자로는 배열의 각 요소가 차례대로 전달됩니다. 조건을 만족하는 요소를 찾으면 해당 요소의 인덱스를 반환하고, 찾지 못하면 -1을 반환합니다.
위의 예시에서는 30보다 큰 첫 번째 요소는 40이므로, 40의 인덱스인 3이 반환됩니다.
비유적인 표현을 통한 이해
‘findIndex’ 메서드를 비유적으로 설명하자면, 배열에서 조건을 만족하는 요소를 찾아내는 것은 마치 어떤 길에서 목적지에 도달하기 위해 첫 번째로 만나는 크로스로드의 방향을 선택하는 것과 비슷합니다. 배열의 각 요소를 순차적으로 검사하면서 조건을 확인하고, 조건을 만족하는 첫 번째 요소를 발견하면 해당 요소의 위치(인덱스)를 알려주는 것이죠.
‘findIndex’ 메서드 활용하기
‘findIndex’ 메서드는 유연하게 활용할 수 있습니다. 다양한 조건을 사용하여 원하는 요소를 찾을 수 있습니다. 예를 들어, 객체 배열에서 특정 조건을 만족하는 요소를 찾을 때도 사용할 수 있습니다.
const students = [
{ name: 'Alice', age: 20 },
{ name: 'Bob', age: 22 },
{ name: 'Charlie', age: 25 },
];
const index = students.findIndex((student) => student.age > 20);
console.log(index); // 1
위의 코드에서는 ‘students’라는 객체 배열에서 나이가 20보다 큰 첫 번째 학생의 인덱스를 찾는 예시입니다. ‘findIndex’ 메서드의 콜백 함수에서는 학생 객체를 받아와서 해당 객체의 ‘age’ 프로퍼티를 확인하여 조건을 검사합니다. 조건을 만족하는 첫 번째 학생은 ‘Bob’이므로, ‘Bob’의 인덱스인 1이 반환됩니다.
주의해야 할 점
‘findIndex’ 메서드를 사용할 때 주의해야 할 몇 가지 사항이 있습니다.
-
‘findIndex’ 메서드는 배열의 처음부터 순차적으로 요소를 검사합니다. 따라서 배열이 매우 큰 경우, 검색 성능에 영향을 줄 수 있으니 주의해야 합니다.
-
‘findIndex’ 메서드는 조건을 만족하는 첫 번째 요소의 인덱스만 반환합니다. 만약 모든 요소의 인덱스를 찾고 싶다면, ‘filter’ 메서드를 사용하거나 반복문을 활용해야 합니다.
-
‘findIndex’ 메서드는 조건을 만족하는 요소를 찾으면 검색을 중단하고 해당 요소의 인덱스를 반환합니다. 따라서 배열에 조건을 만족하는 여러 개의 요소가 있다고 해도, 첫 번째로 만나는 요소의 인덱스만 반환됩니다.
-
조건을 만족하는 요소를 찾지 못한 경우, ‘findIndex’ 메서드는 -1을 반환합니다. 따라서 반환된 인덱스가 -1인지 확인하여 조건을 만족하는 요소가 있는지 여부를 판단할 수 있습니다.
‘findIndex’ 메서드를 활용할 때는 위의 주의사항을 염두에 두고 사용해야 합니다.
자바스크립트의 ‘findIndex’ 메서드는 배열에서 조건을 만족하는 첫 번째 요소의 인덱스를 찾는 유용한 기능을 제공합니다. 해당 메서드를 적절히 활용하여 배열에서 원하는 요소를 찾아내는 데 활용해 보세요!