8.3 배열 검색
1) indexOf, lastIndexOf
indexOf 는 찾고자 하는 것과 정확히 일치(===)하는 첫 번째 요소의 인덱스를 반환
lastIndexOf는 배열의 끝에서부터 검색
검색을 시작할 인덱스 지정 가능
둘 다 일치하는 것을 찾지 못하면 -1을 반환
const o = { name: "Jerry" };
const arr [ 1, 5, "a", o, true, 5, [1, 2], "9"];
arr.indexOf(5); // 1
arr.lastIndexOf(5); // 5
arr.indexOf({ name: "Jerry" }) // -1
2) findIndex
일치하는 것을 찾지 못하면 -1 반환
보조 함수를 써서 검색 조건을 지정할 수 있음 -> indexOf보다 더 다양한 상황에서 활용 가능
검색을 시작하는 인덱스를 지정 불가능
findLastIndex 없음
const arr = [ { id: 5, name: "Judith" }, { id: 7, name: "Francis" } ];
arr.findIndex( o => o.id === 5); // 0
arr.findIndex( o => o.name === "Francis" ) // 1
arr.findIndex( o => o === 3 ); // -1
arr.findIndex( o => o.id === 17 ); // -1
3) find
조건에 맞는 요소의 인덱스가 아니라 요소 자체를 원할 때검색 조건을 함수로 전달할 수 있음
조건에 맞는 요소가 없는 경우? undefined 반환
const arr = [ { id: 5, name: "Judith" }, { id: 7, name: "Francis" } ];
arr.find( o => o.id === 5 ); // 객체 { id: 5, name: "Judith" }
arr.find( o => o.id === 2 ); // undefined
4) some
조건에 맞는 요소를 찾으면 즉시 검색을 멈추고 true 반환
const arr = [ 5, 7, 12, 15, 17 ];
arr.some( x => x % 2 === 0 ); // true; 12는 짝수
arr.some( x => Number.isInteger(Math.sqrt(x))); // false; 제곱수가 없음
5) every
배열의 모든 요소가 조건에 맞아야 true 반환
조건에 맞지 않는 요소를 찾아야만 검색을 멈추고 false 반환
const arr = [ 4, 6, 16, 36 ];
arr.every( x => x % 2 === 0 ); // true; 홀수가 없음
arr.every( x => Number.isInteger(Math.sqrt(x))); // false; 6은 제곱수가 아님
Last updated