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

JavaScript reduce() 메서드로 배열 요소의 곱 구하기

문제 상황

JavaScript로 배열을 다루다 보면 배열에 담긴 모든 숫자 요소를 곱한 결과가 필요한 경우가 있습니다. 예를 들어 여러 배율이나 확률 값을 한 번에 계산할 때 유용합니다.

이번 글에서는 배열 arr를 인자로 받아, 배열의 모든 요소를 곱한 값을 구해 반환하는 함수를 작성하는 방법을 알아보겠습니다.

reduce() 메서드란?

reduce()는 배열의 각 요소를 순회하면서 콜백 함수를 실행하고, 그 결과를 하나의 값으로 누적(accumulate)하는 배열 내장 메서드입니다. 합계뿐만 아니라 곱셈, 객체 병합 등 다양한 형태의 축소 연산에 활용할 수 있습니다.

곱셈의 경우 초기값으로 1을 사용해야 합니다. 만약 초기값을 지정하지 않으면 빈 배열일 때 오류가 발생하거나 잘못된 결과가 나올 수 있기 때문입니다.

코드 예제

다음은 reduce()를 사용해 배열 요소의 곱을 구하는 코드입니다.

const arr = [3, 1, 4, 1, 2, -2, -1];

const produceElements = (arr = []) => {
  const res = arr.reduce((acc, val) => {
    acc = acc * val;
    return acc;
  }, 1);
  return res;
};

console.log(produceElements(arr));

동작 원리 살펴보기

  • acc(누적값): 이전 단계까지의 곱셈 결과를 담고 있으며, 처음에는 초기값 1로 시작합니다.
  • val(현재값): 순회 중인 배열의 현재 요소입니다.
  • 각 순회마다 acc * val이 계산되어 다음 순회의 누적값이 됩니다.

위 예제의 계산 과정은 다음과 같습니다: 1 × 3 × 1 × 4 × 1 × 2 × (-2) × (-1) = 48

출력 결과

콘솔에는 아래와 같은 결과가 출력됩니다.

48

마무리

이처럼 reduce()를 활용하면 반복문 없이도 간결하게 배열 전체의 곱을 계산할 수 있습니다. 음수가 포함된 배열에서도 정상적으로 동작하며, 빈 배열에 대비해 초기값 1을 명시하는 습관을 들이면 더욱 안전한 코드를 작성할 수 있습니다.