코딩 테스트를 풀던 중 정수 배열이 주어지고 평균 값을 구하라는 문제가 나왔다. 사실 너무 쉬운 문제이다. 단순 반복문을 사용하지 않고 reduce를 사용했다.

이 reduce 함수는 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환한다.
구조는 다음과 같은데

callback은 배열의 각 요소에 대해 실행할 함수를 의미한다. 다음 네 가지 인자를 가지게 되는데
accumulator - 누산기라고 할 수 있다. 즉 콜백의 반환값을 누적하게 된다.
currentValue - 처리할 현채 요소
index(Optional) - 배열의 현재 요소의 인덱스
array(Optional) - 호출한 배열
즉 위 풀이에서 sum이 accumulator이고 cur이 currentValue이다. 즉 배열의 요소 하나하나를 지나며 currentValue를 계속해서 더해나가는 식이다.
그럼 initialValue는 무엇일까. 바로 callback의 최초 호출에서 첫 번째 인수에 제공하는 값이다. 초기값을 제공하지 않으면 배열의 첫 번째 요소를 사용하게 된다. 빈 배열에서 초기값 없이 reduce()를 사용하게 되면 첫 번째 요소가 없기 때문에 오류가 발생한다.
이런 방식으로 배열 전체의 합을 쉽게 구할 수가 있다. reduce() 함수는 배열의 각 요소에 주어지는 함수를 실행하기 때문에 더 다방면으로 활용할 수 있다.
공부하면서 정리한 내용입니다. 모든 지적 감사히 받겠습니다:)
'프로그래밍 언어 > JavaScript' 카테고리의 다른 글
[JS] var, let, const의 차이를 알아보자 (0) | 2024.03.01 |
---|---|
[javascript] 자바스크립트 SyntaxError: Unexpected token o in JSON at position 1 에러 (0) | 2023.10.17 |
[JS] import와 require의 차이 (0) | 2023.05.15 |
[JS]자바스크립트로 만든 간단한 리볼빙 계산기 (2) | 2023.05.09 |
[JS] error An identifier or keyword cannot immediately follow a numeric literal 및 자바스크립트 변수 선언 시 주의점 (0) | 2023.04.10 |