코딩테스트 문제를 풀면서 reduce() 함수를 자주 사용한다.
이 함수는 주로 배열의 합계나 곱셈, 평균 등을 구할 때 유용하게 쓸 수 있다.
배열의 합계
const array = [1, 2, 3, 4];
// 0 + 1 + 2 + 3 + 4
const sum = array.reduce((a, c) => a + c, 0);
console.log(sum);
// Output: 10
해당 코드에서
a: 누적값(accumulator)
c: 현재값(current value)
0: 초기값(initial value) 이다.
더 쉬운 설명을 위해 array가 어떻게 동작하는지 살펴보자.
초기값 a는 0이다.
1. 첫번째 반복에서 a + c는 0 + 1이 되어 현재까지 누적값은 1이다.
2. 두번째 반복에서 1 + 2가 되어 누적값은 3이다.
3. 세번째 반복에서는 3 + 3이 되어 현재까지 누적값은 6이다.
4. 네번째 반복에서는 6 + 4가 되어 최종적으로 10이 반환된다.
Initial value(0)를 지정하지 않은 경우,
배열의 첫번째 값(accumulator = 1)으로 초기화되고 배열의 두번째 값(current value = 2)으로 실행이 시작된다.
배열의 평균
const array = [1, 2, 3, 4];
const average = array.reduce((a, c, index, array) => { a += c;
//배열의 마지막 요소에 도달했을 때
if (index === array.length - 1) {
//누적값을 배열의 길이로 나누어 평균을 계산
return a / array.length;
} else {
return a;
}
}, 0);
console.log(average);
// Output: 2.5
평균을 계산할 때 동작도 동일하다.
초기값은 0이다.
1. 0(accumulator) + 1(current value) = 1
2. 1 + 2 = 3
3. 3 + 3 = 6
4. 6 + 4 = 10
5. 10 / 4 = 2.5 (배열의 마지막 요소 return)
장점
reduce()를 사용하면 반복문을 작성하지 않아도 되기 때문에 코드가 간결해지고 로직이 한 줄로 표현되어 가독성이 높아진다.
'Language > JavaScript' 카테고리의 다른 글
[JavaScript] Array.from()으로 배열 만들기 (0) | 2024.01.16 |
---|---|
[JavaScript] 전개 연산자(...) 이해하기, 예제코드 (1) | 2024.01.11 |
[JavaScript] Math.trunc()와 Math.floor()의 차이 (0) | 2024.01.08 |
[JavaScript] Callback Function|콜백함수 동기,비동기 (0) | 2023.07.27 |
[JavaScript] for문을 이용해서 배열로 변환 (0) | 2023.07.27 |