자바스크립트에서 Array.prototype.findIndex()의 사용법은 무엇인가요?
_____A1: findIndex()는 배열에서 주어진 판별 함수를 만족하는 첫 번째 요소의 인덱스를 반환합니다. 조건을 만족하는 요소가 없으면 -1을 반환합니다.
---
Q2: findIndex() 메서드의 기본 문법은 어떻게 되나요?
A2:
```javascript
arr.findIndex(callback(element[, index[, array]])[, thisArg])
```
- `callback`: 각 요소에 대해 호출할 함수로, 세 가지 인수를 받습니다: 요소 값, 요소 인덱스, 배열 자체.
- `thisArg` _(선택)_: 콜백 실행 시 `this`로 사용하는 값입니다.
---
Q3: callback 함수의 인수들은 무엇인가요?
A3:
- `element`: 배열 내 현재 처리 중인 요소
- `index` _(선택)_: 현재 요소의 인덱스
- `array` _(선택)_: findIndex를 호출한 배열 자체
---
Q4: findIndex() 메서드는 어떻게 동작하나요?
A4: 지정한 콜백 함수를 배열의 첫 번째 요소부터 순서대로 호출합니다. 콜백이 true를 반환하는 첫 요소의 인덱스를 반환하며, 없으면 -1을 반환합니다.
---
Q5: 간단한 예시를 보여주세요.
A5:
```javascript
const numbers = [5, 12, 8, 130, 44];
const isLargeNumber = (element) => element > 13;
const index = numbers.findIndex(isLargeNumber);
console.log(index); // 출력: 3 (값 130의 인덱스)
```
---
Q6: 찾는 조건이 없는 경우엔 어떻게 되나요?
A6: 조건에 맞는 요소가 없으면 -1을 반환합니다.
예:
```javascript
const arr = [1, 2, 3];
console.log(index); // 출력: -1
```
---
Q7: thisArg 인수는 무엇에 사용되나요?
A7: callback 내부에서 사용할 `this` 값을 지정할 때 사용합니다.
예:
```javascript
const obj = {
threshold: 10,
check(element) {
return element > this.threshold;
}
};
const arr = [5, 12, 8, 130];
const index = arr.findIndex(obj.check, obj);
console.log(index); // 1 (12의 인덱스)
```
---
Q8: findIndex() 사용 시 주의할 점이 있나요?
A8:
- 배열이 커질수록 콜백이 많이 호출되므로 성능에 영향이 있습니다.
- 배열 요소 중 빈 공간(희소 배열)은 콜백 실행 시 건너뜁니다.
- 콜백은 인덱스 오름차순으로 순서대로 실행됩니다.
---
Q9: findIndex()와 find()의 차이점은 무엇인가요?
A9:
- findIndex()는 조건에 맞는 첫 요소의 인덱스를 반환합니다.
- find()는 조건에 맞는 첫 요소의 값을 반환합니다.
---
Q10: 배열이 아닌 객체에 findIndex()를 사용할 수 있나요?
A10: 일반 객체에는 직접 사용할 수 없고, 배열 또는 배열 유사 객체에만 동작합니다. 유사 배열에 적용하려면 `Array.prototype.findIndex.call()`을 사용할 수 있습니다.
---
요약:
`findIndex()`는 배열에서 특정 조건을 만족하는 첫 요소의 인덱스를 찾아주며, 콜백 함수와 thisArg를 제공해 유연한 탐색이 가능합니다. 조건을 만족하는 요소가 없으면 -1을 반환한다는 점을 기억하면 됩니다.
만약 그런 요소가 없다면 -1을 반환합니다.
이 메서드는 ES6(ECMAScript 201
5)에서 도입되었습니다.
사용법 `findIndex()` 메서드는 다음과 같은 형식으로 사용됩니다: ```javascript array.findIndex(callback(element[, index[, array]])[, thisArg]) ``` 매개변수 - callback : 각 요소에 대해 실행할 함수로, 다음의 매개변수를 가질 수 있습니다: - element : 현재 처리 중인 배열 요소. - index (선택적): 현재 처리 중인 요소의 인덱스. - array (선택적): `findIndex`가 호출된 배열. - thisArg (선택적): `callback`을 실행할 때 `this`로 사용할 값. 반환값 - 주어진 조건을 만족하는 첫 번째 요소의 인덱스. 조건을 만족하는 요소가 없으면 -1을 반환합니다.
예제 1. 기본 사용법 ```javascript const numbers = [4, 9, 16, 25]; const isEven = (element) => element % 2 === 0; const index = numbers.findIndex(isEven); console.log(index); // 0 (4는 짝수이므로) ```
2. 객체 배열에서 사용하기 객체 배열에서 특정 조건을 만족하는 요소의 인덱스를 찾는 예제입니다.
```javascript const users = [ { id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 3, name: 'Charlie' } ]; const index = users.findIndex(user => user.id ===
2); console.log(index); // 1 (Bob의 인덱스) ```
3. 조건을 만족하는 요소가 없는 경우 ```javascript const numbers = [1, 3, 5, 7]; const index = numbers.findIndex(num => num >
10); console.log(index); // -1 (조건을 만족하는 요소가 없음) ```
4. `thisArg` 사용하기 `thisArg`를 사용하여 `callback` 함수 내에서 `this`를 사용할 수 있습니다.
```javascript const obj = { threshold: 10, isGreaterThanThreshold(element) { return element > this.threshold; } }; const numbers = [5, 12, 8, 130, 44]; const index = numbers.findIndex(obj.isGreaterThanThreshold, obj); console.log(index); // 1 (12가 threshold인 10보다 큼) ``` 주의사항 - `findIndex()`는 배열의 각 요소에 대해 `callback` 함수를 호출하며, 배열의 길이에 따라 성능에 영향을 줄 수 있습니다.
따라서 대량의 데이터에 대해 사용할 때는 성능을 고려해야 합니다.
- `findIndex()`는 원본 배열을 변경하지 않습니다.
새로운 배열을 생성하지 않고, 인덱스만 반환합니다.
결론 `Array.prototype.findIndex()`는 배열에서 특정 조건을 만족하는 요소의 인덱스를 찾는 데 유용한 메서드입니다.
객체 배열이나 복잡한 데이터 구조에서도 쉽게 사용할 수 있으며, 조건을 만족하는 요소가 없을 경우 -1을 반환하여 오류 처리를 간편하게 할 수 있습니다.
이 메서드는 배열을 다루는 데 있어 매우 유용한 도구가 될 것입니다.
작성자:
최준수 [비회원]
| 작성일자: 1년 전
2024-09-08 14:47:27
조회수: 173 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 173 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.