원하는 요소 찾기
1. indexOf
인덱스 from부터 시작해 item(요소)을 찾고,
요소를 발견하면 가장 처음 발견한 요소의 인덱스를 반환하고, 발견하지 못했으면 -1을 반환.
arr.indexOf(item, from)
let arr = [1, 2, 3, 4, 3, 2, 1];
console.log(arr.indexOf(5)); // -1
console.log(arr.indexOf(3)); // 2
console.log(arr.indexOf(3, 3)); // 4
console.log(arr.indexOf(3, -2)); // -1
console.log(arr.indexOf(3, -3)); // 4
2. lastIndexOf
indexOf와 동일하나 검색을 끝에서부터 시작.
arr.lastIndexOf(item, from)
let arr = [1, 2, 3, 4, 3, 2, 1];
console.log(arr.lastIndexOf(5)); // -1
console.log(arr.lastIndexOf(3)); // 4
console.log(arr.lastIndexOf(3, 1)); // -1
console.log(arr.lastIndexOf(3, 2)); // 2
console.log(arr.lastIndexOf(3, -1)); // 4
console.log(arr.lastIndexOf(3, -4)); // 2
3. includes
인덱스 from부터 시작해 item이 있는지를 검색하는데, 해당하는 요소를 발견하면 true를 반환합니다.
arr.includes(item, from)
let arr = [NaN];
alert( arr.indexOf(NaN) ); // -1 (완전 항등 비교 === 는 NaN엔 동작하지 않으므로 0이 출력되지 않습니다.)
alert( arr.includes(NaN) );// true (NaN의 여부를 확인하였습니다.)
4. find
기존의 indexOf가 배열내의 특정 값을 찾는데에 사용되었다면,
find, findIndex는 callback 함수를 통해서 좀 더 복잡한 조건의 검색이 가능.
let result = arr.find(function(item, index, array) {
// true가 반환되면 반복이 멈추고 해당 요소를 반환합니다.
// 조건에 해당하는 요소가 없으면 undefined를 반환합니다.
});
let objArr = [{name: 'Nm1', age: 10},{name: 'Nm2', age: 10}, {name: 'Nm3', age: 2}];
let under5 = objArr.find((item)=> item.age < 5);
console.log(under5) // {name: 'Nm3', age: 2}
5. findIndex
주어진 함수를 통과한 첫 번째 요소의 인덱스 값을 반환.
let arr = [1,5,6,3,4,7];
let even = arr.find((item)=> item % 2 === 0 );
console.log(even); // 6
var evenIndex = arr.findIndex((item) => item % 2 === 0);
console.log(evenIndex); // 2 : '6'의 배열 내 index
'JavaScript' 카테고리의 다른 글
자바스크립트 제어 흐름 (0) | 2023.04.15 |
---|---|
배열의 메소드 4 (from, of) (0) | 2023.04.02 |
배열의 메소드 3 (map, filter, reduce, sort, reverse) (0) | 2023.03.21 |
배열의 메소드 1 (push, pop, shift, unshift, splice, slice, concat) (0) | 2023.03.16 |
배열 (Array) (0) | 2023.03.16 |