filter
메서드는 자신을 호출한 배열의 모든 요소를 순회하면서 인수로 전달받은 콜백함수
를 반복 호출한다. 그리고 콜백 함수의 반환값이 true인 요소로만 구성된 새로운 배열을 반환한다.
이때 원본 배열은 변경되지 않는다.
filter
메서드의 콜백 함수는 filter
메서드를 호출한 배열의 요소값
과 인덱스
, 호출한 배열 자체
, 즉 this를 순차적으로 전달 받을 수 있다.
const numbers = [1,2,3,4,5]; // filter 메서드는 numbers 배열의 모든 요소를 순회하면서 콜백 함수를 반복 호출한다. // 그리고 콜백 함수의 반환값이 true인 요소로만 구성된 새배열을 반환한다. // 1은 true로 평가된다. const odds = numbers.filter(item => item % 2); console.log(odds); // [1,3,5] // filter 메서드는 콜백 함수를 호출하면서 3개(요소값, 인덱스, this)의 인수를 전달한다. [1,2,3].filter((item, index, arr) => { console.log(`요소값: ${item}, 인덱스:${index}, this: ${JSON.stringify(arr)}`} return item % 2; }); /* 요소값: 1, 인덱스: 0, this: [1,2,3] 요소값: 2, 인덱스: 1, this: [1,2,3] 요소값: 3, 인덱스: 2, this: [1,2,3] */