const numbers = [1, 2, 3, 4, 5];
const oods = numbers.filter(item => item % 2);
/* numbers 배열에서 홀수인 요소만 필터링한다. 1은 ture로 평가된다. */
console.log(oods); // [1, 3, 5]
console.log(numbers); // [1, 2, 3, 4, 5]
filter 메서드는 자신을 호출한 배열에서 필터링 조건을 만족하는 특정 요소만 추출하여 새로운 배열을 만들고 싶을때 사용한다.
map과 다르게 filter는 메서드가 생성하여 반환한 새로운 배열의 length가 filter 메서드를 호출한 배열의 length와 값과 같거나 작다. (map은 항상 length가 일치하다.)
filter 메서드는 콜백 함수를 호출할 때 3개의 인수, 즉 filter 메서드를 호출한 배열의 요소값과 인덱스, filter 메서드를 호출한 배열(this)을 순차적으로 전달한다.
[1, 2, 3].filter((item, index, arr) => {
console.log(`요소값: ${item}, 인덱스: ${index}, this: ${arr}`);
return item % 2;
};
/*
요소값: 1, 인덱스: 0, this: [1, 2, 3]
요소값: 2, 인덱스: 1, this: [1, 2, 3]
요소값: 3, 인덱스: 2, this: [1, 2, 3]
*/