오늘은 배열 메서드 Array.prototype.reduce()
에 대해 알아보자.
reduce()
메서드는 배열의 각 요소에 대해 주어진 reducer
함수를 실행하고, 하나의 결과값을 반환한다. 이 reducer
함수는 4 개의 인자를 가지는데, 순서대로
accumulator
)current value
)current index
)src
)가 되겠다.
reducer
함수의 반환값은 누산기에 누적되고, 누산기는 배열의 각 요소를 순회하다가 끝나므로 결과는 하나의 값이 된다.
reduce
메서드는 초기값을 설정해줄 수 있는데, 이 초기값은 optional
이다. 즉 있어도 되고 없어도 되는 값이다. 여기서 주의할 점이 있는데 초기값이 생략되어있는 경우, 누산기는 0 번째 인덱스
를 무시하고 1 번째 인덱스
부터 시작한다.
초기값이 있는 상태에서 메서드가 실행되면, 누산기의 값은 초기값이 되고 현재 값(current value
)는 배열의 첫 번째 값이 된다.
초기값이 없느 상태에서 메서드가 실행되면, 누산기의 값은 배열의 첫 번째 값과 같고 현재 값(current value
)는 배열의 두 번째 값과 같게 된다.
만약 빈 배열을 제공하고 초기값 또한 없다면 TypeError
가 발생한다.
만약 빈 배열을 제공하고 초기값을 제공한다면 콜백 호출 없이 초기값을 반환한다.
그래서 대개의 상황에서 결과로 나올 값의 타입을 알고 있다면 초기값을 정해주는 것이 바람직하다.