filter도 새로운 배열을 생성해서 리턴 받는다.
그런데 map처럼 길이가 모두 똑같은 것이 아니라
정확하게 원하는 원소만 배열을 생성할 수 있다.
a = [10, 11, 12, 13, 14, 15];
let answer = a.filter(function (v, i) {
return v%2==0;
}, [1, 2]);
console.log(answer);
이렇게 리턴에 값을 주면 그 값이 참인 요소들만 리턴을 한다.

이것이 출력값.
function filter(predicate, thisArg){
let list=[];
for(let i=0; i<a.length; i++;){
if(predicate(a[i], i)) list.push(a[i]);
}
return list;
}
그럼 작동 원리는 어떨까?
forEach나 map과 똑같이 요소들을 하나하나 탐색하고
콜백을 반복호출하는 것은 똑같다.
그리고 if문을 사용해서 참인 값만 list에 원소로 해주는 것.
'JS' 카테고리의 다른 글
reduce 작동원리 (0) | 2021.08.29 |
---|---|
map 작동원리 (0) | 2021.08.25 |
forEach 작동원리 (0) | 2021.08.24 |
setInterval API (0) | 2021.05.21 |
퍼포먼스 개발 툴 사용하기🧨 (0) | 2021.05.17 |