2020. 7. 29. 20:18
반응형

자바스크립트 배열 요소들의 합계를 구하고 싶을 때가 있다.

엑셀이라면 sum으로 했을텐데 자바스크립트는 sum은 없어보였다.

보통 이럴 때는 var total 하나 선언해놓고 for문을 돌려서 해결할 수 있다.

 

좀더 괜찮은 방법이 없을까 찾아보다가 reduce를 이용하는 방법을 발견했다.

근데 그냥 편한대로 익숙한대로 for or forEach문을 이용해서 하는 것도 나쁘진 않을 것 같다.

 

다음 코드를 보면 대충 사용법에 대한 감을 잡을 수 있을 것이다.

참고로 익스플로러를 사용하지 않는다면 function(a, b){return a + b;} 대신 (a, b) => a + b;로 간단하게 나타낼 수 있다.

var arr = [1, 3, 5, 4, 19];
var sum = arr.reduce(function(a, b){ return a + b; }, 0);
// 32

var arr2 = [{name: "name1", score: 21}, {name:"name2", score: 23}, {name: "name3", score: 31}];
var sum2 = arr2.map(function(x){ return x.score; }).reduce(function(a, b){ return a + b; }, 0);
// 75
반응형