자바스크립트 filter 함수

Chaeyoung·2024년 1월 2일
0

filter 메서드 사용 형태

Array.filter(조건 함수)

  • 주어진 배열에서 제공된 함수에 의해 구현된 테스트를 통과한 요소로만 필터링한다.
const words = ['spray', 'elite', 'exuberant', 'destruction', 'present'];

const result = words.filter((word) => word.length > 6);

console.log(result);
// Expected output: Array ["exuberant", "destruction", "present"]

filter함수의 매개변수

filter(callbackFn)
filter(callbackFn, thisArg)

callbackFn

배열의 각 요소에 대해 실행할 함수. 결과 배열에 요소를 유지하려면 참 값을 반환하고 그렇지 않으면 거짓 값을 반환한다.

  • 구성 인수 element(배열에서 처리 중인 현재 요소), index(배열에서 처리 중인 현재 요소의 인덱스), array (filter()가 호출된 배열)

thisArg

  • callbackFn을 실행할 때 this 값으로 사용할 값, 순회 메서드

순회메서드

  • 많은 배열 메서드는 콜백 함수를 인수로 받는다. 콜백 함수는 배열의 각 요소에 대해 순차적으로 최대 한 번만 호출되며, 콜백 함수의 반환값은 메서드의 반환값을 결정하는 데 사용.
  • 예시 : every(), filter(), find(), findIndex(), map(), flatMap(), forEach(), some() 등

filter함수란?

얕은 복사본은 반환하는 복사, 순회 메서드로 배열의 각 요소에 대해 제공된 콜백함수를 한 번씩 호출하고, 콜백이 참 값을 반환하는 모든 값으로 새 배열을 구성한다. 콜백함수 테스트를 통과하지 못한 배열 요소는 새 배열에 포함되지 않는다.
콜백함수는 값이 할당된 배열 인덱스에 대해서만 호출된다.

사용 시 주의 사항

  • callbackFn은 filter() 호출이 시작되었을 때 배열의 초기 length 값을 초과하여 추가된 요소는 방문하지 않는다.
  • 이미 방문한 인덱스를 변경해도 callbackFn이 해당 인덱스에 대해 다시 호출되지 않는다.
  • 배열의 아직 방문하지 않은 기존 요소가 callbackFn에 의해 변경되는 경우, callbackFn에 전달된 값은 해당 요소가 방문될 당시의 값이 됩니다. delete된 요소는 방문하지 않는다.

예시

function isBigEnough(value) {
  return value >= 10;
}

const filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// 필터링된 값은 [12, 130, 44]
  • filter메서드는 복잡한 코드를 생성하는 경우가 많으므로 꼭 필요한 경우가 아니라면 사용 지양하기.

참고링크

0개의 댓글