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
}
위의 값과 다르게, 화살표 함수를 사용 하지 않고도 이를 구현 할 수 있다.