Javascript Array.prototype.reduce()
Post

Javascript Array.prototype.reduce()

reduce()메서드는 배열의 각 요소에 대해 주어진 리듀서함수를 실행하고, 하나의 결과값을 반환한다.

리듀서 함수는 4개의 인자를 가진다.

  • 누산기(acc)
  • 현재 값(cur)
  • 현재 인덱스(idx)
  • 원본 배열(src)

구문

arr.reduce(callback[, initialValue]) 구문으로 사용할 수 있다.

매개변수

callback : 배열의 각 요소에 대해 실행할 함수이며, 다음 4가지 인수를 받을 수 있다.

  • accumulator : 콜백의 반환값을 누적하고, initialValue값이 있을 경우 initialValue값이다.
  • currentValue : 처리할 현재 요소
  • currentIndex : 처리할 현재 요소의 인덱스이며 initialValue값을 제공할 경우 0이나 1부터 시작한다.
  • array : reduce()를 호출한 배열

initialValue : callback의 최초 호출에서 첫번째 인수에 제공하는 값이며, 초기값이 없으면 배열의 첫번째 요소를 사용한다.

빈 배열에서는 initialValue가 없으면 오류가 발생된다.

에제

  • 배열의 모든 값 합산 (화살표 함수 사용)
    1
    2
    
          var total = [ 0, 1, 2, 3 ].reduce(
              ( accumulator, currentValue ) => accumulator + currentValue,0);
    
  • 객체 배열의 값 합산 객체로 이루어진 배열의 값을 합산하기 위해서는 반드시 초기값을 주어야 한다.
    1
    2
    3
    4
    5
    6
    7
    8
    
          var initialValue = 0;
              var sum = [{x: 1}, {x:2}, {x:3}].reduce(
                  (accumulator, currentValue) => accumulator + currentValue.x
                  ,initialValue
              );
    
              console.log(sum) // logs 6
    
    
  • 중첩 배열 펼치기
    1
    2
    3
    4
    5
    
          var flattened = [[0, 1], [2, 3], [4, 5]].reduce(
              ( accumulator, currentValue ) => accumulator.concat(currentValue),
              []
              );
    
    

참조