본문 바로가기

Programming/Javascript

15. Javascript 함수형 프로그래밍 적용(6) - reduce

javascript logo image

 

 

reduce( ) 함수는 앞서 살펴본 map과도 약간 유사한 형태를 띠는 함수입니다. 이 함수는 배열의 각 요소를 하나씩 꺼낸 다음 사용자가 정의한 함수를 적용시킨 후, 그 결과 값을 계속해서 누적하는 기능을 합니다.

 

 

Array.prototype.reduce = function(callback, memo) {
    // this(obj)가 배열인지 확인 필요함
    // callback이 함수인지 확인 필요함

    var obj = this;
    var value;
    var accumulated_value = 0;

    for(var i = 0; i < obj.length; i++) {
        value = obj[i];
        accumulated_value = callback.call(null, accumulated_value, value);
    }

    return accumulated_value;
};

var arr = [1, 2, 3];
var accumulated_result = arr.reduce(function(a, b) {
    return a + b * b;
});

console.log(accumulated_result);

/* 출력
14
*/