Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript reduce() 메서드 하나로 배열 평균값 구하기

문제 정의

숫자로 이루어진 배열을 입력받아, 배열 내 모든 숫자의 평균값을 계산하는 JavaScript 함수를 작성해야 합니다. 여기서 유일한 조건은 반드시 Array.prototype.reduce() 메서드를 사용해야 한다는 점입니다.

reduce() 메서드의 동작 원리

reduce()는 배열의 각 요소를 순회하면서 콜백 함수를 실행하고, 그 결과를 누적값에 더해 최종적으로 하나의 값으로 반환하는 고차 함수입니다. 콜백 함수는 다음 네 가지 인수를 받습니다.

  • acc (누적값): 이전 콜백 호출에서 반환된 값
  • value (현재값): 현재 처리 중인 배열 요소
  • index (인덱스): 현재 요소의 인덱스
  • array (원본 배열): reduce()가 호출된 배열 자체

구현 예제

const arr = [129, 139, 155, 176];
const calculateAverage = (arr = []) => {
    const reducer = (acc, value, index, array) => {
        let val = acc + value;
        if (index === array.length - 1) {
            return val / array.length;
        };
        return val;
    };
    const res = arr.reduce(reducer, 0);
    return res;
};
console.log(calculateAverage(arr));

코드 설명

동작 과정을 단계별로 살펴보면 다음과 같습니다.

  1. reducer 함수는 매번 acc + value를 통해 지금까지의 누적합을 계산합니다.
  2. 현재 인덱스가 마지막 요소(index === array.length - 1)라면, 누적합을 배열 길이로 나누어 평균값을 반환합니다.
  3. 초기값으로 0을 전달했기 때문에 누적 계산이 안전하게 시작되며, 별도의 변수 없이 reduce() 호출 한 번으로 결과를 얻을 수 있습니다.

실행 결과

콘솔에는 다음과 같이 출력됩니다.

149.75

(129 + 139 + 155 + 176) ÷ 4 = 599 ÷ 4 = 149.75로, 올바른 평균값이 반환되는 것을 확인할 수 있습니다.