12장. 함수형 반복

  1. 코드의 냄새 감지하기 (함수 이름에 있는 암묵적 인자)
  2. 리팩터링: 암묵적 인자 드러내기
  3. 리팩터링: 함수 본문을 콜백으로 바꾸기

함수형 도구 map(), filter(), reduce()

1. map()

function map(arr, f) {
  const newArr = [];
  forEach(arr, function (elem) {
    newArr.push(f(elem));
  });
  return newArr;
}

2. filter()

function filter(arr, f) {
  const newArr = [];
  forEach(arr, function (elem) {
    if (f(elem)) {
      newArr.push(elem);
    }
  });
  return newArr;
}

3. reduce()

function reduce(arr, init, f) {
  const acc = init;
  forEach(arr, function (elem) {
    acc = f(acc, elem);
  });
  return acc;
}
  • 주의할 것

    1. 함수 인자의 순서
    2. 초깃값 결정
  • 초깃값을 결정하는 방법

    1. 계산이 어떤 값에서 시작하는가?
    2. 빈 배열을 사용하면 어떤 값을 리턴할 것인가?