reduce 는 iter 를 누적하여 값을 만들어 낸다. 이 것은 많은 일을 하지만 나쁘게 사용될 수도 있다.

사람들은 사용하지 않아도 되는 경우 사용하고 있다.

Jake도 과거에 자신을 빗대어 썰을 풀었다. 3단계를 거쳤다고 한다.

  1. 처음엔 간단한 코드를 작성한다. 정규식, .reduce 를 사용하지 않았다. 그것들이 무서웠기 때문이다.
  2. 많은 프로그래밍 테크닉을 배우게 된다. 커링, 재귀 등등 그러고 나면 모두에게 내가 얼마나 똑똑한지 나의 코드를 입증해야 한다. 그리고 누군가가 나의 코드 일부분을 보고 그는 똑똑하고 많은 것을 안다고 해주길 바란다.
  3. Jake는 지금은 그의 코드가 비기너 책에 있는 코드처럼 보이길 원한다. 코드가 직관적 이길 바란다.

그렇다면 어디에서 reduce를 사용해야 하는가?

Surma가 reduce가 사용 되어지는 4가지 경우를 말한다.

  1. Sum or sum-like
  2. Array method (+ Object.entries())
  3. It's a loop, innit
  4. #IamSmarterThanYou

실제로 loop 가 더 명확하고 깔끔한 경우가 있다. 그러나 내가 작성한 코드는 항상 나에게는 명확하다...

인기있는 오픈소스 프로젝트 들의 .reduce 코드를 검색 해보았다.

코드1

commitDurations.reduce(
	(max, duration) => Math.max(max, duration),
	0,
);

가장 높은 값을 찾기 위한 코드이다. 그러나 더 좋은 방법이 있다...