• [ JavaScript ] 자바스크립트 reduce function

    2021. 5. 11.

    by. KimBangg

    1. 머릿말

     

    알고리즘을 짜다보면, 자바스크립트가 가진 내장 함수들의 파워풀함을 느낄 수 있는 것 같다. 

     

    자바스크립트가 제공하는 함수가 아닌 일반적인 코드를 짜는 것도 능력이지만, JS로만 알고리즘을 풀기 원하는 기업들의 입장에서는 

     

    1) "내장함수를 잘 이용하는 것이 좋지 않을까?"

     

    라는 생각이 들기도 하고,

     

    아무래도 함수를 잘 이용한다면

     

    2) 코드가 깔끔해지면서, 가독성이 올라감을 느낀다.

     

     

    2. Reduce Function 

     

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

     

    다음 정의는 MDN 에서 얻어올 수 있는 정의인데, 더욱 편리한 이해를 위해 예시를 사용해 접근 해보고자 한다.

     

    let arr = [ [1,2,3], [2,3,4] ] ];
    for (let i = 0; i < accounts.length; i++) {
    let sum = accounts[i].reduce((x, y) => x + y);
    // 1st sum = 1 + 2 + 3 = 6
    // 2nd sum = 2 + 3 + 4 = 9
    if (sum > max) {
    max = sum;
    }
    // max's result = 9
    }

     

    하단의 코드를 보면 X는 accumulator로써 더해지는 값을 저장하는 변수이며 Y는 arr의 변수를 돌면서 값을 변경한다

     

    그리하여,  X (0) +=  Y(1) => X(1) += Y(2) => X(3) += Y(3) 의 과정을 반복하여 6 이라는 결과 값을 얻을 수 있다.

     

    let arr = [ [1,2,3], [2,3,4] ] ];
    for (let i = 0; i < accounts.length; i++) {
    let sum = arr.reduce(function (accumulator, currentValue) {
    return accumulator + currentValue; });
    // 1st sum = 1 + 2 + 3 = 6
    // 2nd sum = 2 + 3 + 4 = 9
    if (sum > max) {
    max = sum;
    }
    // max's result = 9
    }

    위의 값과 다르게,  화살표 함수를 사용 하지 않고도 이를 구현 할 수 있다.

     

    댓글