reducer

jodmsoluth·2020년 3월 13일
0

함수형프로그래밍

목록 보기
13/17
  1. 리듀서 만들기
var slice = Array.prototype.slice;
function _rest(list, num) {
  return slice.call(list, num || 1);
}

function _reducer(list, iter, memo) {
  if(arguments.length === 2) {
    memo = list[0];
    // list = list.slice(1);
    // slice는 array의 메서드... 이 reducer는 array일 경우에만 사용 가능
    // 하지만 유사 배열에서도 사용할 수 있도록 바꿔야된다.
    list = _rest(list);
  }
  _each(list, function(val) {
    memo = iter(memo, val);
  })
  return memo;
}

console.log(
  _reducer([1, 2, 3], add, 0));
// output : 6
// 동작방식
// memo = add(0, 1)
// memo = add(memo, 2);
// memo = add(memo, 3);
// return memo

// 3번째 memo 인자 생략 가능
console.log(
  _reducer([1,2,3], add));
// 동작방식
// add(add(1,2),3);
profile
풀스택이 되고 싶은 주니어 웹 개발자입니다.

0개의 댓글