TIL 005 | JavaScript Array.prototype.reduce()

This Is Empty.·2021년 8월 8일
0

TIL

목록 보기
5/23
post-thumbnail

Array.prototype.reduce()

  • reduce()메서드는 배열의 각 요소에 대해 주어진 리듀서(reducer)함수를 실행하고 하나의 결과값을 반환한다(배열의 값을 한 개로 감소시킨다).
  • map,filter, find함수로 구현할 수 있는 기능은 모두 reduce로 구현이 가능하다.

1. 구문

arr.reduce(callback[, initialValue])

매개변수

  • callback : 배열의 각 요소에 대해 실행할 함수. 다음 네가지 인수를 받는다.
    • acumulator : 콜백의 반환값을 누적한다. 콜백의 이전 반환값 또는, initialValue가 있는 경우 initialValue의 값
    • currentValue : 처리할 현재 요소
    • currentIndex(Optional) : 처리할 현재 요소의 인덱스, initialValue가 있는 경우 0, 아니면 1
    • array(Optional) : reduce()를 호출한 배열
  • initialValue(Optional) : 콜백의 최초 호출에서 첫번째 인수에 제공하는 값. 초기값을 제공하지 않으면 배열의 첫번째 요소를 사용한다. 빈 배열에서 초기값 없이 reduce()를 호출하면 오류가 발생한다.

return

누적 계산의 결과 값

2. 작동방식

1. initialValue 값이 있는 경우

let sampleArray = [1,2,3,4,5]

var result = sampleArray.reduce((accumulator, currentValue, currentIndex, array){
	return accmulator + currentValue},0)

console.log(result) // 15

콜백은 5번 호출되며, 각 인수는 다음과 같은 값을 갖는다.

callbackaccumlatorcurrentValuecurrentIndexarrayreturn
1010[1,2,3,4,5]1
2121[1,2,3,4,5]3
3332[1,2,3,4,5]6
4643[1,2,3,4,5]10
51054[1,2,3,4,5]15

2. initialValue 값이 없는 경우

let sampleArray = [1,2,3,4,5]

var result = sampleArray.reduce((accumulator, currentValue, currentIndex, array){
	return accmulator + currentValue})

console.log(result) // 15

콜백은 4번 호출되며, 각 인수는 다음과 같은 값을 갖는다.

callbackaccumlatorcurrentValuecurrentIndexarrayreturn
1121[1,2,3,4,5]3
2332[1,2,3,4,5]6
3643[1,2,3,4,5]10
41054[1,2,3,4,5]15

initialValue를 제공하지않으면 reduce()는 인덱스 1번부터 시작해 콜백함수를 실행하고 0 번째 인덱스는 건너뛴다.

  • reduce()함수 호출시 initialValue값이 없는 경우 :
    • accumlator는 배열의 첫번째 값
    • currentValue는 배열의 두번째 값
profile
Convinced myself, I seek not to convince.

0개의 댓글