arr.reduce(callback[, initialValue])
- 누적값
- 각 원소에 대해 callboack 함수 실행, 하나의 결과 값 반환
- 총 원소의 합을 구할 때 주로 사용
- 반환값 = 초기값 + 모든 원소의 연산 값
- 초기값이 없으면 default 0번째 인덱스
배열의 각 요소에 대해 실행할 함수
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
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
}
- 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