웹 개발 메모장

[자바스크립트] 배열의 reduce() 함수 본문

옛날../자바스크립트

[자바스크립트] 배열의 reduce() 함수

도로롱주 2017. 11. 1. 17:19




배열.reduce(함수)




매개변수로 함수를 넘기면 해당 배열의 모든 원소들이 순차적으로 함수의 내용을 누적해서 연산하여 결과를 return 합니다.




아래와 같이 arr이라는 배열에서 reduce 함수를 호출하면 더한 값을 return 하는 함수가

반복 실행되어 1+2+3+4+5를 반환하게 됩니다.

1
2
var arr = [1,2,3,4,5];
var sum = arr.reduce((a, b) => a + b);
cs




1
(a, b) => a + b
cs


※ 위 코드는 람다식 표현으로 아래의 코드로 아래와 같은 코드입니다.


1
2
3
function(a, b) {
    return a + b;
}
cs




약수의 합을 구하는 함수를 예로 들어 보겠습니다.



아래의 코드는 숫자를 입력받아 약수의 합을 return 하는 함수입니다.

1
2
3
4
5
6
7
8
9
10
11
function sumDivisor(num) {
    var answer = 0;
    
    for(var i=1;i<=num/2;i++) {
        if(num%i == 0) {
            answer += i;
        }
      }
 
    return answer+num;
}
cs




위 코드를 reduce를 사용하여 아래와 같이 표현할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
function sumDivisor(num) {
    var result = [];
 
    for (var i = 0; i <= num; i++) {
        if (num % i === 0) {
            result.push(i);
        }
    }
 
    return result.reduce((a, b) => a + b);
}
cs




Comments