표 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은 다음 번 누적 값이 됩니다.

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