reduce()
메서드는 배열의 각 요소에 대해 주어진 리듀서(reducer)함수를 실행하고 하나의 결과값을 반환한다(배열의 값을 한 개로 감소시킨다).map
,filter
, find
함수로 구현할 수 있는 기능은 모두 reduce
로 구현이 가능하다.arr.reduce(callback[, initialValue])
callback
: 배열의 각 요소에 대해 실행할 함수. 다음 네가지 인수를 받는다.acumulator
: 콜백의 반환값을 누적한다. 콜백의 이전 반환값 또는, initialValue
가 있는 경우 initialValue
의 값currentValue
: 처리할 현재 요소currentIndex(Optional)
: 처리할 현재 요소의 인덱스, initialValue
가 있는 경우 0, 아니면 1array(Optional)
: reduce()
를 호출한 배열initialValue(Optional)
: 콜백의 최초 호출에서 첫번째 인수에 제공하는 값. 초기값을 제공하지 않으면 배열의 첫번째 요소를 사용한다. 빈 배열에서 초기값 없이 reduce()
를 호출하면 오류가 발생한다.누적 계산의 결과 값
let sampleArray = [1,2,3,4,5]
var result = sampleArray.reduce((accumulator, currentValue, currentIndex, array){
return accmulator + currentValue},0)
console.log(result) // 15
콜백은 5번 호출되며, 각 인수는 다음과 같은 값을 갖는다.
callback | accumlator | currentValue | currentIndex | array | return |
---|---|---|---|---|---|
1 | 0 | 1 | 0 | [1,2,3,4,5] | 1 |
2 | 1 | 2 | 1 | [1,2,3,4,5] | 3 |
3 | 3 | 3 | 2 | [1,2,3,4,5] | 6 |
4 | 6 | 4 | 3 | [1,2,3,4,5] | 10 |
5 | 10 | 5 | 4 | [1,2,3,4,5] | 15 |
let sampleArray = [1,2,3,4,5]
var result = sampleArray.reduce((accumulator, currentValue, currentIndex, array){
return accmulator + currentValue})
console.log(result) // 15
콜백은 4번 호출되며, 각 인수는 다음과 같은 값을 갖는다.
callback | accumlator | currentValue | currentIndex | array | return |
---|---|---|---|---|---|
1 | 1 | 2 | 1 | [1,2,3,4,5] | 3 |
2 | 3 | 3 | 2 | [1,2,3,4,5] | 6 |
3 | 6 | 4 | 3 | [1,2,3,4,5] | 10 |
4 | 10 | 5 | 4 | [1,2,3,4,5] | 15 |
initialValue
를 제공하지않으면 reduce()
는 인덱스 1번부터 시작해 콜백함수를 실행하고 0 번째 인덱스는 건너뛴다.
reduce()
함수 호출시 initialValue
값이 없는 경우 :accumlator
는 배열의 첫번째 값currentValue
는 배열의 두번째 값