[ES6] Array.prototype.filter() 를 직접 구현해보자.

Yoon Han·2022년 9월 12일
0
post-thumbnail

저번의 map 함수 구현에 이어 이번에는 filter 함수를 간단하게 직접 구현해보도록 하겠습니다~

함수 기능 정의

역시 filter 함수가 가져야할 기능부터 정의하고 구현에 들어가도록 하겠습니다.

filter 함수에 필요한 기능

  1. predicate 함수를 통해 사용자로부터 필터링 할 기준을 입력 받음.
  2. 입력 받은 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}]
profile
챗바퀴는 도는 삶이 싫은 프론트엔드 엔지니어

0개의 댓글