JavaScript 배열과 메서드 2

이건선·2023년 2월 15일
0

배열 탐색하기

indexOf, lastIndexOf와 includes

arr.indexOf(item, from)는 인덱스 from부터 시작해 item(요소)을 찾습니다. 요소를 발견하면 해당 요소의 인덱스를 반환하고, 발견하지 못했으면 -1을 반환한다.
arr.lastIndexOf(item, from)는 위 메서드와 동일한 기능을 하는데, 검색을 끝에서부터 시작한다는 점만 다르다.
arr.includes(item, from)는 인덱스 from부터 시작해 item이 있는지를 검색하는데, 해당하는 요소를 발견하면 true를 반환한다.

let arr = [1, 0, false];

alert( arr.indexOf(0) ); // 1
alert( arr.indexOf(false) ); // 2
alert( arr.indexOf(null) ); // -1

alert( arr.includes(1) ); // true

find와 findIndex

객체로 이루어진 배열에서, 특정 조건에 부합하는 객체를 배열 내에서 어떻게 찾을 수 있을까?

let result = arr.find(function(item, index, array) {
  // true가 반환되면 반복이 멈추고 해당 요소를 반환합니다.
  // 조건에 해당하는 요소가 없으면 undefined를 반환합니다.
});

item – 함수를 호출할 요소
index – 요소의 인덱스
array – 배열 자기 자신

id와 name 프로퍼티를 가진 사용자 객체로 구성된 배열을 예로 들어보자. 배열 내에서 id == 1 조건을 충족하는 사용자 객체를 찾아보자.

let users = [
  {id: 1, name: "John"},
  {id: 2, name: "Pete"},
  {id: 3, name: "Mary"}
];

let user = users.find(item => item.id == 1);

alert(user.name); // John

filter

조건을 충족하는 요소가 여러 개라면 arr.filter(fn)를 사용하면 된다.

let results = arr.filter(function(item, index, array) {
  // 조건을 충족하는 요소는 results에 순차적으로 더해진다.
  // 조건을 충족하는 요소가 하나도 없으면 빈 배열이 반환된다.
});

예시

let users = [
  {id: 1, name: "John"},
  {id: 2, name: "Pete"},
  {id: 3, name: "Mary"}
];

// 앞쪽 사용자 두 명을 반환합니다.
let someUsers = users.filter(item => item.id < 3);

alert(someUsers.length); // 2
profile
멋지게 기록하자

0개의 댓글

관련 채용 정보