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

Dev.Jo·2021년 7월 14일

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

목표

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

  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개의 댓글