티스토리 뷰

반응형

누구나 알고 있겠지만 평균을 구할 때에는 저장된 요소의 값을 모두 더하고 그 요소의 개수만큼 나누면 된다. 이렇게 평균값을 구하는 방식을 코드로 작성해보자.

 

1
2
3
4
const array = [12573210];
const average = array.reduce((a, c) => a + c) / array.length;
 
console.log(average); // 13.2
cs

 

 

모든 값을 더할 때, reduce라는 매서드를 사용하였다. reduce는 배열에 있는 모든 요소의 값을 합쳐서 새로운 값으로 반환하는 매서드이다. reduce의 형식은 아래와 같다.

 

1
2
3
array.reduce((accumulator, currentValue, currentIdx, array) => {
    return accumulator + currentValue;
}, initialValue);
cs

 

 

  • accumulator : 값을 받아 누산하여 반환하는 기능이다. 초깃값을 지정했을 경우 초깃값이 기본값이며, 초깃값이 없을 경우 배열의 첫 번째 요소가 기본값이 된다.
  • currentValue : 처리할 현재 요소를 말한다. 초깃값이 지정된 경우 배열의 첫번째 요소가 currentValue가 된다. 초깃값이 지정되지 않은 경우 배열의 두 번째 요소가 currentValue가 된다.
  • currentIdx (선택사항) : 처리할 현재 요소의 인덱스이다.
  • array (선택사항) : reduce()가 실행된 배열이다.
  • initialValue : 초깃값을 지정할 수 있다. 

 

 

글로만 보면 어려울 수 있지만 예제를 보면 이해가 쉬워진다. sum1은 초깃값 없이 모든 배열 요소를 합한 경우이고, sum2은 초깃값을 설정하여 10에다가 모든 배열 요소를 합한 경우이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const array = [12345];
const sum1 = array.reduce(function(acc, cur) {
    return acc + cur;
});
 
console.log(sum1); //  15 (1 + 2 + 3 + 4 + 5)
 
 
 
const sum2 = array.reduce(function(acc, cur) {
    return acc + cur;
}, 10);
 
console.log(sum2);    // 25 (10 + 1 + 2 + 3 + 4 + 5)
cs

 

 

매개변수로 구분하여 차이를 확인해보자.

 

sum1

 

누적값 (accumulator) 현잿값 (current value) 현재 인덱스 (current Idx) 현재 배열명(array)
1
(배열의 첫번째 요소)
2
(배열의 두번째 요소)
1
(배열의 두번째 요소의 인덱스)
array

 

sum2

 

누적값 (accumulator) 현잿값 (current value) 현재 인덱스 (current Idx) 현재 배열명(array)
10
(초깃값이 첫번째 누적값이 된다)
1
(배열의 첫번째 요소)
0
(배열의 첫번째 요소의 인덱스)
array

 

 

 

reduce 매서드도 화살표 함수로 간단하게 표현할 수 있다.

 

1
2
3
4
5
6
7
8
9
10
11
const array = [12345];
const sum1 = array.reduce((acc, cur) => acc + cur);
 
console.log(sum1); //  15 (1 + 2 + 3 + 4 + 5)
 
 
 
 
const sum2 = array.reduce((acc, cur) => acc + cur, 10);
 
console.log(sum2);    // 25 (10 + 1 + 2 + 3 + 4 + 5)
cs

 

 

 

 

반응형
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31