본문 바로가기

js

[JS] reduce() 함수 관련 정리


reduce() 함수


배열에 저장된 값을 더할 때 유용하게 사용된다. 

reduce 함수 콜백의 4가지 인자

  • accumulator (필수) : 누적되는 콜백의 반환 값
  • currentValue (필수) : 처리할 현재 요소. (= 배열에 저장된 값들)
  • currentIndex (Optional) : 처리할 현재 요소의 인덱스. initialValue를 제공한 경우 0, 아니면 1부터 시작합니다.
  • array (Optional) : reduce()를 호출한 배열.

initialValue (Optional) : 첫 콜백의 호출에서 첫 번째 인수(accumulator)에 제공되는 값.

 

initialValue의 경우 optional으로 지정되지 않을 경우 배열의 첫 번째 값으로 자동 지정되기 때문에, 빈 배열에서 사용하는 경우에는 오류가 발생한다. 

 

반환 값은 누적된 계산 값을 반환한다.


관련 문제로 프로그래머스 자릿수 더하기 문제가 있다.

자연수를 입력받아 각 자리에 있는 숫자들을 더하는 문제이다. 

 

 

입력된 자연수를 String으로 변경 후 split 하여 각 자릿수의 숫자를 배열에 저장한다.

배열의 reduce() 함수를 이용하여 배열의 값들을 더하는 콜백 함수를 통해 누적 값을 받아와 반환하면 끝!

주의할 점은 String으로 변환했기 때문에 그냥 더하는 경우에는 문자열이 생성된다.

따라서 parseInt를 사용하여 숫자로 바꿔줘야 한다.

 

function solution(n)
{
    var answer = 0;
    answer = String(n).split("").reduce((accum,current) => accum+parseInt(current), 0);
    return answer;
}

initialValue을 0으로 지정해, accum에 0이 들어간 상태이고, current에 배열의 0번째 값이 들어가며 시작된다. accum은 이미 0으로 숫자이기 때문에 current 값만 parseInt를 통해 숫자로 변경 후 더해지도록 구현하였다.