티스토리 뷰
반응형
누구나 알고 있겠지만 평균을 구할 때에는 저장된 요소의 값을 모두 더하고 그 요소의 개수만큼 나누면 된다. 이렇게 평균값을 구하는 방식을 코드로 작성해보자.
1
2
3
4
|
const array = [12, 5, 7, 32, 10];
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 = [1, 2, 3, 4, 5];
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 = [1, 2, 3, 4, 5];
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 |
반응형
'JavaScript' 카테고리의 다른 글
[Javascript] 배열 차원 낮추는 flat() 매서드 (0) | 2021.10.15 |
---|---|
[Javascript] 구조분해 할당(destructuring assignment) (0) | 2021.10.13 |
[Javascript] 물음표(?) / 삼항 연산자 / 조건 연산자 / 조건문 (0) | 2021.10.11 |
[Javascript] for 문에서 var 대신 let 사용하는 이유 + setTimeout() (2) | 2021.10.09 |
[Javascript] 배열을 정렬하는 함수 sort() (0) | 2021.10.07 |