12장. 함수형 반복
- 코드의 냄새 감지하기 (함수 이름에 있는 암묵적 인자)
- 리팩터링: 암묵적 인자 드러내기
- 리팩터링: 함수 본문을 콜백으로 바꾸기
함수형 도구 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;
}
-
주의할 것
- 함수 인자의 순서
- 초깃값 결정
-
초깃값을 결정하는 방법
- 계산이 어떤 값에서 시작하는가?
- 빈 배열을 사용하면 어떤 값을 리턴할 것인가?