정리
indexOf(), findIndex(), find()
minnjeong
2023. 4. 11. 19:45
indexOf
indexOf() 메서드는 배열에서 지정된 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고 존재하지 않으면 -1을 반환한다.
구문
arr.indexOf(searchElement[, fromIndex])
- searchElement : 배열에서 찾을 요소이다.
- fromIndex : 검색을 시작할 색인이다. 인덱스가 배열의 길이보다 크거나 같은 경우 -1이 반환된다.
예시
const a = ['과자', '빵', '커피', '사과'];
//커피가 몇번째 항목인지 알고싶다면
const index = a.indexOf('커피'); // 2
findIndex
배열 안에 있는 값이 숫자, 문자열, 또는 불리언이라면 찾고자하는 항목이 몇번째 원소인지 알아낼 때 사용한다.
배열 안에 있는 값이 객체이거나, 배열이라면 indexOf로 찾을 수 없다.
구문
arr.findIndex(callback(element[, index[, array]])[, thisArg])
반환 값
요소가 테스트를 통과하면 배열의 인덱스. 그렇지 않으면 -1을 반환한다.
- callback : 배열의 각 값에 대해 실행할 함수
- element : 배열에서 처리중인 현재 요소
- index : 배열에서 처리중인 현재 요소의 인덱스
- array : findIdex 함수가 호출된 배열
- thisArg : 선택 사항. 콜백이 실행될 때 this로 사용할 객체
예시
const todos = [
{
id: 1,
text: '자바스크립트 입문',
done: true
},
{
id: 2,
text: '함수 배우기',
done: true
},
{
id: 3,
text: '객체와 배열 배우기',
done: true
},
{
id: 4,
text: '배열 내장함수 배우기',
done: false
}
];
여기서 id가 3인 객체가 몇번째인지 찾으려면, findIndex 함수에 검사하고자 하는 조건을 반환하는 함수를 넣어서 찾을 수 있다.
const index = todos.findIndex(todo => todo.id === 3);
console.log(index); //2
find
찾아낸 값이 몇번째인지 알아내는 것이 아니라, 찾아낸 값 자체를 반환한다.
주어진 판별 함수를 만족하는 첫 번째 요소의 값을 반환한다. 그런 요소가 없다면 undefined를 반환한다.
찾은 요소의 값 대신 인덱스를 반환 -> findeIdex()
배열 요소의 위치 반환 -> Array.prototype.indexOf()
구문
arr.find(callback[, thisArg])
- callback : 배열의 각 값에 대해 실행할 함수
- index : 콜백함수에서 처리할 현재 요소의 인덱스
- array : find 함수를 호출한 배열
- thisArg : 선택 항목. 콜백이 호출될 때 this로 사용할 객체
반환 값
주어진 판별 함수를 만족하는 첫 번째 요소의 값. 그 외에는 undefined
예시
const todos = [
{
id: 1,
text: '자바스크립트 입문',
done: true
},
{
id: 2,
text: '함수 배우기',
done: true
},
{
id: 3,
text: '객체와 배열 배우기',
done: true
},
{
id: 4,
text: '배열 내장함수 배우기',
done: false
}
];
const todo = todos.find(todo => todo.id === 3);
console.log(todo);
위의 결과는 다음과 같다.
{id: 3, text: "객체와 배열 배우기", done: true}
속성 중 하나를 사용하여 배열에서 객체 찾기
let person = [
{name: 'min' , name:20},
{name: 'oh' , name:35},
{name: 'maru' , name:12}
];
function findmaru(a) {
return a.name === 'maru';
}
console.log(person.find(findmaru)); // {name: 'maru' , name:12}
화살표 함수 사용하기
let person = [
{name: 'min' , name:20},
{name: 'oh' , name:35},
{name: 'maru' , name:12}
];
let result = person.find(a => a.name === 'maru');
console.log(result) //{name: 'maru' , name:12}