함수형프로그래밍으로 map, filter 구현

Dev.Jo·2021년 7월 14일
0

인프런 함수형프로그래밍을 듣고 정리한 글입니다.

목표

명령적 프로그래밍이 아닌 함수형 프로그래밍을 통해 반복되는 코드를 줄이고, 사용성이 높은 함수를 만들어 보자!

  1. 자바스크립트에서 함수는 일급함수!
  • 함수를 변수 값에 할당할 수 있다
  • 즉 , 다른 함수의 인자로 함수자체를 건낼 수 있다!

기존의 코드

나이가 30이상인 유저들만 걸러보자!!

// 명령적 코드
var temp_users = [];
for (var i = 0; i < users.length; i++) {
  	if(users[i].age >= 30){
		temp_users.push(users[i]);
	}
}
  • 만약 나이가 30미만인 유저들을 거르려면?
  • 또 다시 새로운 조건문을 통해 반복적인 코드를 작성해야함

함수형 프로그래밍

// filter함수 작성
function _filter(users, predi){
  var new_list;
  for(var i=0; i <users.length; i++){
   	if(predi(users[i]) {
       		new_list.push(users[i]);
     	}
  }
  return new_list;
}

// 30이상인 유저들 거르기
_filter(users,function(user) {return user.age >= 30 } )

// 30미만인 유저들 거르기
_filter(users,function(user) {return user.age < 30 } )


// map함수 작성
function _map(list, mapper){
	var names = [];
	for(var i = 0; i < temp_users.length; i++){
		new_list.push(mapper(list[i]));
// list[i].name이 아닌 list[i]를 건내서 확장성을 높인다!!
      // mapper에 따라 mapping하는 속성을 달리함
    	}
	return new_list;
}

_map(users, function(user) { return user.name }) 
_map(users, function(user) { return user.age })

함수형 프로그래밍으로 작성함으로서 함수의 재사용성! 확장성! 모두 올라갈 수 있다!!!

profile
소프트웨어 엔지니어, 프론트엔드 개발자

0개의 댓글