Programming Skills/함수형 프로그래밍

함수형 프로그래밍- reduce함수

Ideveloper2 2018. 2. 27. 02:14


함수형 프로그래밍- reduce함수

function _reduce(list, iter, memo){
 if(arguments.length == 2){
   memo = list[0];
   //slice는 array만 사용가능
   list = list.slice(1);
}
 _each(list,function(val){
   memo = iter(memo,val);
});
 return memo;
}

console.log(
_reduce([1,2,3], add, 0));
//6

memo = add(0,1);
memo = add(memo, 2);
memo = add(memo, 3);
return memo;

reduce는 말 그대로 축약하는 함수이다. (재귀)

개발자가 고민을 덜하게한다.

쉽게 코딩을 할 수있다.


console.log(
_reduce([1,2,3], add);
)
//세번째 인자값을 넣지 않아도 된다. 위의 if문 참고!

+추가+

slice 란? 배열의 크기를 넣어준 인자만큼 자르는 함수


var a =[1,2,3];
a.slice(1);
//결과 [2,3]
a.slice(2);
//결과 [3];
a
//결과 [1,2,3] ->실제 배열을 자르는 것은 아님.새로운 값 return은 x

var  a ={0: 1, 1: 20, 2: 30};
//array like 객체에서는 a.slice안됨.
//아래와 같이는 사용가능
var slice = Array.prototype.slice;
slice.call(a,1);