저번의 map 함수 구현에 이어 이번에는 filter
함수를 간단하게 직접 구현해보도록 하겠습니다~
역시 filter
함수가 가져야할 기능부터 정의하고 구현에 들어가도록 하겠습니다.
filter
함수에 필요한 기능
- predicate 함수를 통해 사용자로부터 필터링 할 기준을 입력 받음.
- 입력 받은 predicate 함수의 return 값이
true
인 아이템만 결과 배열에 넣어서 반환.
function filter(predicate, iter) {
const result = [] // predicate 함수에 의해 걸러진 아이템을 보관할 배열
for (const item of iter) {
// predicate 함수의 반환 값이 true 인 item 만 결과 배열에 넣기
if (predicate(item)) result.push(item)
}
return result
}
정의한대로 심플하게 구현했습니다. 간단하죠?
const users = [
{
name: 'Park',
age: 25,
},
{
name: 'Choi',
age: 20,
},
{
name: 'Kim',
age: 30,
},
{
name: 'Han',
age: 28,
},
]
const under30 = filter(user => user.age < 30, users)
const over25 = filter(user => user.age > 25, users)
console.log(under30) // [{name: 'Park', age: 25} ,{name: 'Choi', age: 20}, {name: 'Han', age: 28}]
console.log(over25) // [{name: 'Kim', age: 30}, {name: 'Han', age: 28}]