View

 

 

reduce( ) 함수

: 배열의 각 요소를 순회하며 callback 함수의 실행 값을 누적해 하나의 결과값을 반환

 

 

Syntax

arr.reduce(callback[, initialValue])

 

Parameter

1. callback function

  : 배열의 각 요소에 대해 실행할 함수. 다음 4가지의 인수를 가짐

    ˙ accumulator

        : callback 함수의 반환값 누적.

          콜백의 이전 반환값 / 콜백의 첫 번째 호출이면서 initialValue를 제공한 경우 => initialValue의 값

    ˙ currentValue

        : 배열의 현재 요소

    ˙ index (Optional)

        : 배열의 현재 요소의 인덱스

    ˙ array (Optional)

        : reduce()를 호출한 배열

 

2. initialValue (Optional)

  : 최초 callback 함수 실행 시 accumulator 인수에 제공되는 값.

    초기값을 제공하지 않을 경우 배열의 첫 번째 요소를 사용, 배열에서 초기값 없이 reduce()를 호출하면 오류 발생

 

 

반환 값

배열을 순서대로 불러 각 요소에 대해 callback 함수를 실행한 결과를 누적한 값

 

 

예제

예제 1) 초기 값 제공하지 않는 경우

//function
[0, 1, 2, 3, 4].reduce(function(accumulator, currentValue, currentIndex, array) {
    return accumulator + currentValue;
});

//화살표 함수 (위 코드와 동일한 결과 반환)
[0, 1, 2, 3, 4].reduce( (prev, curr) => prev + curr );
callback accumulator currentValue currentIndex array 반환 값
1번째 호출 0 1 1 [0, 1, 2, 3, 4] 1
2번째 호출 1 2 2 [0, 1, 2, 3, 4] 3
3번째 호출 3 3 3 [0, 1, 2, 3, 4] 6
4번째 호출 6 4 4 [0, 1, 2, 3, 4] 10

=> reduce( )의 반환 값 : 마지막 콜백 호출의 반환 값(10)

 

예제 2) 두 번째 인수로 초기 값 제공하는 경우

[0, 1, 2, 3, 4].reduce(function(accumulator, currentValue, currentIndex, array) {
    return accumulator + currentValue;
}, 10);
callback accumulator currentValue currentIndex array 반환 값
1번째 호출 10 0 0 [0, 1, 2, 3, 4] 10
2번째 호출 10 1 1 [0, 1, 2, 3, 4] 11
3번째 호출 11 2 2 [0, 1, 2, 3, 4] 13
4번째 호출 13 3 3 [0, 1, 2, 3, 4] 16
5번째 호출 16 4 4 [0, 1, 2, 3, 4] 20

=> reduce( )의 반환 값 : 마지막 콜백 호출의 반환 값(20)

 

예제 3) 원하는 항목의 값만 더하기

const fruits = [
    {
    	name : 'mango',
        num : 2,
        color : 'yellow'
    },
    {
    	name : 'podo',
        num : 5,
        color : 'purple'
    },
    {
    	name : 'apple',
        num : 3,
        color : 'red',
    }
];

//과일 갯수 더하기
//초기 값 설정 필수
const fruitsSum = fruits.reduce((accumulator, currentObject) => {
    return accumulator + currentObject.num;
}, 0);

console.log('과일 갯수 : ' + fruitsSum);    //10

 

 

주의할 점!

  • initialValue가 없으면 배열의 2번째부터 계산이 되기 때문에 배열이 비어있으면 => TypeError
  • 배열의 요소가 하나 뿐이면서 initialValue가 없는 경우, 또는 initialValue가 주어졌으나 배열이 비어 있는 경우에는 계산할 필요가 없기 때문에 callback 호출 없이 그대로 반환

 

 

 

 

 

 

 

 

※ 출처

1. https://tocomo.tistory.com/26

 

JavaScript - 배열 reduce() 사용법 및 예제

구문 자바스크립트의 reduce함수는 배열의 각 요소를 순회하며 callback함수의 실행 값을 누적하여 하나의 결과값을 반환 합니다. arr.reduce(callback[, initialValue]) 파라미터 callback function 다음 4가지..

tocomo.tistory.com

2. developer.mozilla.org

 

Array.prototype.reduce() - JavaScript | MDN

reduce() 메서드는 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환합니다.

developer.mozilla.org

 

 

 

 

'JavaScript > Js Method' 카테고리의 다른 글

JavaScript 화살표 함수  (0) 2022.02.14
Array.from( )  (0) 2022.01.18
Share Link
reply
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31