인프런 함수형프로그래밍을 듣고 정리한 글입니다.
명령적 프로그래밍이 아닌 함수형 프로그래밍을 통해 반복되는 코드를 줄이고, 사용성이 높은 함수를 만들어 보자!
나이가 30이상인 유저들만 걸러보자!!
// 명령적 코드
var temp_users = [];
for (var i = 0; i < users.length; i++) {
if(users[i].age >= 30){
temp_users.push(users[i]);
}
}
// 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 })
함수형 프로그래밍으로 작성함으로서 함수의 재사용성! 확장성! 모두 올라갈 수 있다!!!