JavaScript-reduce메소드
포스트
취소

JavaScript-reduce메소드

프로그래머스 LV.0을 풀다보니 reduce메소드를 사용한 코드를 많이 보게 되었다.

사용방법

1
2
3
4
// 사용방법
array.reduce((누적값, 현재값, 현재 인덱스, 원본 배열) => {
  return 결과;
}, 초기값);

reduce 함수의 return값은 누적값에 계속 누적된다. → 최종적으로 하나의 값이 된다.

  • 누적값(accumulator) : 콜백함수의 반환값을 누적한다. 첫 번째 호출인데 초기값이 있으면 초기값과 같은 값을 가진다.
  • 현재값(currentValue) : 처리할 현재 요소
  • 현재 인덱스(currentIndex) : 처리할 현재 요소의 인덱스. 초기값이 있으면 0부터 시작하고, 없으면 1부터 시작한다.
  • 원본 배열(array) : reduce()를 호출한 배열
  • 초기값(initialValue) : 콜백함수의 첫 번째 호출에서 첫 번째 인수에 해당하는 값. 만약 원본 배열이 빈 배열이라면 초기값이 있어야한다.
  • 결과(return) : 누적 계산의 결과 값

예시1. 초기값이 없는 경우

1
2
3
4
5
6
7
8
9
10
11
12
13
[0, 1, 2, 3, 4].reduce(function (
  누적값,
  현재값,
  현재 인덱스,
  원본 배열
) {
  return 누적값 + 현재값;
});

// 또는

[0, 1, 2, 3, 4].reduce( (prev, curr) => prev + curr );

callback누적값현재값현재 인덱스원본 배열반환 값
1번째 호출011[0, 1, 2, 3, 4]1
2번째 호출122[0, 1, 2, 3, 4]3
3번째 호출333[0, 1, 2, 3, 4]6
4번째 호출644[0, 1, 2, 3, 4]10

→ 최종 반환 값 : 10

예시2. 초기값이 10인 경우

1
2
3
4
5
6
7
8
9
10
11
12
13
[0, 1, 2, 3, 4].reduce(function (
  accumulator,
  currentValue,
  currentIndex,
  array
) {
  return accumulator + currentValue;
},
10);

// 또는

[0, 1, 2, 3, 4].reduce((prev, curr) => prev + curr, 10);
callback누적값현재값현재 인덱스원본 배열반환 값
1번째 호출1000[0, 1, 2, 3, 4]10
2번째 호출1011[0, 1, 2, 3, 4]11
3번째 호출1122[0, 1, 2, 3, 4]13
4번째 호출1333[0, 1, 2, 3, 4]16
5번째 호출1644[0, 1, 2, 3, 4]20

→ 최종 반환 값 : 20


출처 ) mdn - Array.prototype.reduce()


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.