언어/JavaScript
[JavaScript] Array.reduce() 배열의 합계, 평균
github.com/zlrloy
2024. 1. 10. 21:16
코딩테스트 문제를 풀면서 reduce() 함수를 자주 사용한다.
이 함수는 주로 배열의 합계나 곱셈, 평균 등을 구할 때 유용하게 쓸 수 있다.
배열의 합계
const array = [1, 2, 3, 4];
// 0 + 1 + 2 + 3 + 4
const sum = array.reduce((a, c) => a + c, 0);
console.log(sum);
// Output: 10
해당 코드에서
a: 누적값(accumulator)
c: 현재값(current value)
0: 초기값(initial value) 이다.
더 쉬운 설명을 위해 array가 어떻게 동작하는지 살펴보자.
초기값 a는 0이다.
1. 첫번째 반복에서 a + c는 0 + 1이 되어 현재까지 누적값은 1이다.
2. 두번째 반복에서 1 + 2가 되어 누적값은 3이다.
3. 세번째 반복에서는 3 + 3이 되어 현재까지 누적값은 6이다.
4. 네번째 반복에서는 6 + 4가 되어 최종적으로 10이 반환된다.
Initial value(0)를 지정하지 않은 경우,
배열의 첫번째 값(accumulator = 1)으로 초기화되고 배열의 두번째 값(current value = 2)으로 실행이 시작된다.
배열의 평균
const array = [1, 2, 3, 4];
const average = array.reduce((a, c, index, array) => { a += c;
//배열의 마지막 요소에 도달했을 때
if (index === array.length - 1) {
//누적값을 배열의 길이로 나누어 평균을 계산
return a / array.length;
} else {
return a;
}
}, 0);
console.log(average);
// Output: 2.5
평균을 계산할 때 동작도 동일하다.
초기값은 0이다.
1. 0(accumulator) + 1(current value) = 1
2. 1 + 2 = 3
3. 3 + 3 = 6
4. 6 + 4 = 10
5. 10 / 4 = 2.5 (배열의 마지막 요소 return)
장점
reduce()를 사용하면 반복문을 작성하지 않아도 되기 때문에 코드가 간결해지고 로직이 한 줄로 표현되어 가독성이 높아진다.