더북(TheBook)

표 2-2 초기 값이 있는 reduce( ) 계산표

a(누적 값)

0

1

3

6

10

c(현재 값)

1

2

3

4

5

a + c(반환값)

1

3

5

10

15

마지막 반환값인 15가 reduce() 메서드의 결과 값이 됩니다. 메서드는 배열의 모든 요소를 한 번씩 사용하고 있습니다. 즉, reduce()도 일종의 반복문 역할을 합니다.

만약 초기 값을 제공하지 않으면 실행 순서가 어떻게 바뀔까요?

[1, 2, 3, 4, 5].reduce((a, c) => {
  return a + c;
}); // 15

reduce() 메서드에 초기 값을 제공하지 않으면 첫 번째 요소의 값인 1이 초기 값이 됩니다. 초기 값은 첫 번째 누적 값으로 들어갑니다. 이때는 두 번째 요소부터 reduce()를 적용하게 됩니다. 따라서 누적 값(a)이 1, 현재 값(c)이 2인 상태로 함수가 시작됩니다. 이때 반환값인 3은 다음 번 누적 값이 됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.