-
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 }
위의 값과 다르게, 화살표 함수를 사용 하지 않고도 이를 구현 할 수 있다.
'Develop > JavaScript' 카테고리의 다른 글
[JavaScript] 자바스크립트의 메모리 모델 ( 부제 : let vs Const ) (0) 2021.05.20 [JavaScript] Splice & Slice (0) 2021.05.20 [JavaScript] 자바스크립트 배열의 최대값 구하는 방법 (0) 2021.05.11 [JavaScript] Map() vs Every() (0) 2021.04.18 [Javascript] " Function() " vs " Const = () => " (0) 2021.04.18 댓글