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

JavaScript reduce() 메서드로 배열을 하나의 값으로 줄이는 방법

JavaScript에서 reduce() 메서드를 사용하면 배열의 모든 요소를 순회하면서 하나의 값으로 줄일 수 있습니다. 가장 대표적인 활용 예는 배열에 담긴 숫자들의 합계를 구하는 것입니다.

reduce() 메서드란?

reduce() 메서드는 배열의 각 요소에 대해 콜백 함수를 실행합니다. 이때 콜백 함수는 두 가지 주요 인자를 받습니다.

  • 누적값(accumulator): 이전 콜백 호출에서 반환된 값
  • 현재값(currentValue): 현재 처리 중인 배열 요소

모든 요소를 처리한 후에는 최종적으로 누적된 단일 값을 반환합니다. 필요에 따라 두 번째 인자로 초기값(initial value)을 지정할 수도 있습니다.

예제 코드

다음은 reduce() 메서드를 사용해 배열 요소의 합계를 구하는 전체 코드입니다.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
    body {
        font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
    }
    .result,
    .sample {
        font-size: 18px;
        font-weight: 500;
        color: red;
    }
    .result {
        color: blueviolet;
    }
    button {
        padding: 8px;
    }
</style>
</head>
<body>
<h1>Reduce arrays javascript</h1>
<div><pre class="sample">[1,3,5,6,9,22,15]</pre></div>
<div class="result"></div>
<button class="Btn">Sum</button>
<h3>Click on the above button to sum the elements of the array</h3>
<script>
    let resEle = document.querySelector(".result");
    let BtnEle = document.querySelector(".Btn");
    let sampleEle = document.querySelector(".sample");
    let arr = [1, 3, 5, 6, 9, 22, 15];
    sampleEle.innerHTML = arr;
    BtnEle.addEventListener("click", () => {
        resEle.innerHTML =
        "Sum = " +
        arr.reduce((sum, prev) => {
            return sum + prev;
        });
    });
</script>
</body>
</html>

위 코드에서는 arr.reduce((sum, prev) => { return sum + prev; }) 부분이 핵심입니다. 각 요소가 순회될 때마다 이전까지의 합계(sum)에 현재 요소(prev)가 더해지고, 모든 순회가 끝나면 최종 합계가 반환됩니다.

실행 결과

페이지를 실행하면 다음과 같이 샘플 배열과 'Sum' 버튼이 표시됩니다.

JavaScript reduce() 메서드로 배열을 하나의 값으로 줄이는 방법

'Sum' 버튼을 클릭하면 −

JavaScript reduce() 메서드로 배열을 하나의 값으로 줄이는 방법

버튼을 클릭하면 reduce() 메서드가 배열 [1, 3, 5, 6, 9, 22, 15]의 모든 요소를 더한 결과인 Sum = 61이 화면에 출력됩니다.

정리

reduce() 메서드는 합계뿐만 아니라 곱셈, 최댓값·최솟값 찾기, 객체 변환 등 다양한 용도로 활용할 수 있는 강력한 배열 메서드입니다. 초기값을 지정하면 빈 배열에서도 안전하게 동작하므로 상황에 맞게 활용해 보시기 바랍니다.