본문 바로가기

Language/JavaScript

[JavaScript] Array.reduce() 배열의 합계, 평균

 

코딩테스트 문제를 풀면서 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()를 사용하면 반복문을 작성하지 않아도 되기 때문에 코드가 간결해지고 로직이 한 줄로 표현되어 가독성이 높아진다.