reduce, reduceRight

이주희·2022년 5월 1일
0

JS Method

목록 보기
17/17

[reduce]

arr.reduce(callback[, initialValue])

  • 누적값
  • 각 원소에 대해 callboack 함수 실행, 하나의 결과 값 반환
  • 총 원소의 합을 구할 때 주로 사용
  • 반환값 = 초기값 + 모든 원소의 연산 값
  • 초기값이 없으면 default 0번째 인덱스

callback

  • 배열의 각 요소에 대해 실행할 함수

  • accumulator: 누산기는 콜백의 반환값을 누적한다.

  • currentValue: 처리할 현재 요소

  • 누적 계산의 결과 값을 반환한다.

arr.reduce((누적값, 현재값)=>{
		// 현재값+누적값을 리턴
	},초기값)

예시

/*배열의 모든 값 합산*/
//1. 
var total = [ 0, 1, 2, 3 ].reduce(
 ( acc, cur ) => acc + cur,
  0
);

> 결과 <
  6

//2. 
let arr = [1,2,3,4,5,6,7,8,9]
arr.reduce((acc,cur)=>{
		console.log(`누적값 : ${acc} , 현재값 : ${cur}`)
		return acc+cur
	},10)

> 결과 <
누적값 : 10 , 현재값 : 1
누적값 : 11 , 현재값 : 2
누적값 : 13 , 현재값 : 3
누적값 : 16 , 현재값 : 4
누적값 : 20 , 현재값 : 5
누적값 : 25 , 현재값 : 6
누적값 : 31 , 현재값 : 7
누적값 : 38 , 현재값 : 8
누적값 : 46 , 현재값 : 9
55

reduce 직접 구현하기

function reduce_01(callback, arr, initialValue) {
    // 여기에 코드를 작성하세요
    if(!initialValue) {
        initialValue = arr[0]
        for(let i=1; i<arr.length; i++) {
            initialValue = callback(initialValue, arr[i])
        }
    } else {
        for(let i=0; i<arr.length; i++) {
            initialValue = callback(initialValue, arr[i])
        }
    }

    return initialValue
}

reduceRight : 누적값 뒤에서부터

  • reduce와 유사
  • 현재값이 배열의 끝에서부터 시작
arr.reduceRight((누적값,현재값)=>{
		// 현재값 + 누적값을 리턴
	})

예시

let arr = [1,2,3,4]
arr.reduceRight((acc, cur)=>{
		console.log(`누적값 : ${acc} , 현재값 : ${cur}`)
		return acc + cur
	} ,20)

> 결과 <
누적값 : 20 ,현재값 : 4
누적값 : 24 ,현재값 : 3
누적값 : 27 ,현재값 : 2
누적값 : 29 ,현재값 : 1
30
profile
🍓e-juhee.tistory.com 👈🏻 이사중

0개의 댓글