JavaScript
자꾸 잊는 reduce()
kelly09
2025. 3. 1. 21:24
- 배열의 각 요소에 대해 주어진 reducer 함수를 실행하고, 하나의 결과값을 반환하는 메소드.
array.reduce(callback(accumulator, currentValue[, index[, array]]), [initialValue])
- callback: 각 요소에 대해 실행할 함수. 네 개의 매개변수를 가짐.
- accumulator: 누적값(이전 콜백의 반환값)
- currentValue: 현재 처리 중인 배열 요소
- index(선택): 현재 처리 중인 요소의 인덱스
- array(선택): reduce를 호출한 배열
- initialValue(선택): 첫 번째 호출에서 accumulator로 사용할 값
☕ 사용 예시
- 배열의 합계 구하기
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
console.log(sum); // 15
단계 | accumulator | currentValue | 반환값 |
1 | 0 | 1 | 0 + 1 = 1 |
2 | 1 | 2 | 1 + 2 = 3 |
3 | 3 | 3 | 3 + 3 = 6 |
4 | 6 | 4 | 6 + 4 = 10 |
5 | 10 | 5 | 10 + 5 = 15 |
- 객체 배열에서의 활용
const cafe = [
{ name: '아메리카노', price: 4500 },
{ name: '흑임자 라떼', price: 5500 },
{ name: '밀크티', price: 6000 }
];
const total = cafe.reduce((acc, item) => acc + item.price, 0);
console.log(total); // 16000
단계 | acc(누적값) | item(현재값) | 계산 | 반환값 |
1 | 0 | price: 4500 | 0 + 4500 | 4500 |
2 | 4500 | price: 5500 | 4500 + 5500 | 10000 |
3 | 10000 | price: 6000 | 10000 + 6000 | 16000 |