const array1 = [1, 2, 3, 4];
const reducer = (accumulator, currentValue) => accumulator + currentValue;
// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));
// expected output: 10
// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));
// expected output: 15
실제 reduce의 인자는 2개이다. 하나는 리듀서라고 부르는 누산기연산을 하는 callback함수이고
두번째 인자는 누산기의 초기값이다.
callback
배열의 각 요소에 대해 실행할 함수. 다음 네 가지 인수를 받습니다.
accumulator
누산기accmulator는 콜백의 반환값을 누적합니다. 콜백의 이전 반환값 또는, 콜백의 첫 번째 호출이면서 initialValue
를 제공한 경우에는 initialValue
의 값입니다.currentValue
처리할 현재 요소.currentIndex
Optional처리할 현재 요소의 인덱스. initialValue
를 제공한 경우 0, 아니면 1부터 시작합니다.array
Optionalreduce()
를 호출한 배열.
initialValue
Optional
callback
의 최초 호출에서 첫 번째 인수에 제공하는 값. 초기값을 제공하지 않으면 배열의 첫 번째 요소를 사용합니다. 빈 배열에서 초기값 없이 reduce()
를 호출하면 오류가 발생합니다.
accumulator의 최초값은 초기값이 없으면 src배열의 첫번째 값이되며 currentValue는 두번째 값이 됨
초기값을 인자로 주면 accumulator는 초기값으로 시작하며 currentValue는 배열의 첫번째 값이 됨
즉 초기값이 있을때와 없을때는 리턴 횟수가 다름!
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce