educe() 메서드는 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환합니다.
map이 배열의 각 요소를 변형한다면 reduce는 배열 자체를 변형합니다. reduce라는 이름은 이 메서드가 보통 배열을 값 하나로 줄이는 쓰이기 때문에 붙었습니다. 예를 들어 배열에 들어있는 숫자를 더하거나 평균을 구하는 것은 배열을 값 하나로 줄이는 동작입니다. 하지만 reduce가 반환하는 값 하나는 객체일 수도 있고, 다른 배열일 수도 있습니다.
리듀서 함수는 네 개의 인자를 가집니다.
누산기accumulator (acc)
현재 값 (cur)
현재 인덱스 (idx)
원본 배열 (src)
리듀서 함수의 반환 값은 누산기에 할당되고, 누산기는 순회 중 유지되므로 결국 최종 결과는 하나의 값이 됩니다.
arr.reduce(callback[, initialValue])
매개변수
callback
: 배열의 각 요소에 대해 실행할 함수. 다음 네 가지 인수를 받는다.
accumulator
: 누산기accmulator는 콜백의 반환값을 누적합니다. 콜백의 이전 반환값 또는, 콜백의 첫 번째 호출이면서 initialValue를 제공한 경우에는initialValue의 값입니다.
currentValue
: 처리할 현재 요소.
currentIndex(optional : )
: 처리할 현재 요소의 인덱스. initialValue를 제공한경우 0, 아니면 1부터 시작합니다.
-array(optional : 사용해도 되고 안해도 되고) : reduce()를 호출한 배열.
initialValue(optional : )
: callback의 최초 호출에서 첫 번째 인수에 제공하는 값. 초기값을 제공하지 않으면 배열의 첫 번째 요소를 사용합니다. 빈 배열에서 초기값 없이 reduce()를 호출하면 오류가 발생합니다.
반환값
누적 계산의 결과 값.