reduce

wooo·2023년 5월 7일
0

reduce()

reduce()는 배열의 각 요소에 대해 reducer 함수를 실행하고, map()filter()와 다르게 배열이 아닌 하나의 결과 값만 반환한다. reduce()의 인자 값은 callback[, initivalValue]로 callback의 경우는 reducer라고 불리며 accumulator, currentValue, currentIndex, array와 같은 인자를 받는다. accumulator은 값을 누적하는 누산기이고, currentValue는 현재 요소의 값을 말한다. currentIndex와 array는 필수 입력 값은 아니다. reduce()는 매우 다양한 케이스로 활용될 수 있다.

reduce 직접 구현하기

const customReduce = (array, callback, initialValue) => {
	accumulator = initialValue
	if (accumulator === undefined) {
      accumulator = array[0]
      for (let i = 1; i < array.length; i++) {
        accumulator = callback(accumulator, array[i])
      }
    } else {
      for (let i = 0; i < array.length; i++) {
        accumulator = callback(accumulator, array[i])
      }
    }
  
  return accumulator
}

array와 적용할 callback 함수, initialValue를 받아서 initialValue 제공 여부에 따라 분기처리 하였다.
initialValue를 제공하지 않으면, reduce()는 인덱스 1부터 시작해서 콜백 함수를 실행하고 첫 번째 인덱스는 건너 뛴다.
initialValue를 제공하면 인덱스 0에서 시작한다, 그리고 연산의 결과를 계속 accumulator변수에 누적 저장해서 반환한다. reduce 함수는 다양한 목적을 위해 다양한 형태로 사용되기 때문에, 특히 객체를 다루고 조작할 때 많이 쓰인다고 한다.


출처

0개의 댓글