Develop/JavaScript

[ JavaScript ] 자바스크립트 reduce function

KimBangg 2021. 5. 11. 20:37

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
  }

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