filter 메서드

filter 메서드는 배열의 요소 중 특정 조건에 맞는 요소만 남기고 필터링할 수 있게 합니다. 이 메서드는 매개변수로 함수를 받으며, 이 함수는 배열의 각 요소에 대해 실행됩니다. 메서드는 결과로 새 배열을 반환하며, 이 새 배열에는 전달된 함수가 true를 반환한 요소만 포함됩니다.

함수에는 세 개의 매개변수를 전달할 수 있습니다. 이 매개변수들은 필수는 아니지만, 존재할 경우 첫 번째 매개변수에는 배열 요소가 자동으로, 두 번째 매개변수에는 배열에서의 위치(인덱스)가, 세 번째 매개변수에는 배열 자체가 전달됩니다.

구문

javascriptlet 새 배열 = 배열.filter(function(요소, 인덱스, 배열) {
  코드
  return true 또는 false
});

예제

배열에서 양수만 남기고 필터링해 봅시다:

javascriptlet arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1];

let res = arr.filter(function(elem) {
  if (elem >= 0) {
    return true;
  } else {
    return false;
  }
});

console.log(res);

코드 실행 결과:

javascript[5, 1, 1, 3, 4]

예제

화살표 함수를 사용하여 코드를 줄여봅시다:

javascriptlet arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1];

let res = arr.filter(elem => {
  if (elem >= 0) {
    return true;
  } else {
    return false;
  }
});

console.log(res);

코드 실행 결과:

javascript[5, 1, 1, 3, 4]

예제

논리 연산자 단축 평가를 사용하여 코드를 줄여봅시다:

javascriptlet arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1];

let res = arr.filter(elem => {
  return elem >= 0;
});

console.log(res);

코드 실행 결과:

javascript[5, 1, 1, 3, 4]

예제

화살표 함수의 특징을 활용하여 코드를 더 줄여봅시다:

javascriptlet arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1];
let res = arr.filter(elem => elem > 0);

console.log(res);

코드 실행 결과:

javascript[5, 1, 1, 3, 4]

예제

필요한 경우 세 번째 매개변수에 배열 자체를 전달할 수 있습니다:

javascriptlet res = arr.filter(function(elem, index, arr) {
  // 여기서 arr 배열에 접근할 수 있습니다.
});

같이 보기

  • 배열의 각 요소에 함수를 적용할 수 있는 map 및 forEach 메서드
  • 배열 검사를 수행하는 some 및 every 메서드
  • 배열을 단일 값으로 줄이는 reduce 및 reduceRight 메서드