Algorithm/Programmers
[프로그래머스-Level1] 평균 구하기_JavaScript + reduce() 함수
무민_
2022. 5. 19. 10:30
평균 구하기
- 문제 설명
정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.
- 제한사항
- arr은 길이 1 이상, 100 이하인 배열입니다.
- arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.
- 입출력 예
arr return[1,2,3,4] | 2.5 |
[5,5] | 5 |
< reduce() 함수 >
자바스크립트의 reduce 함수는 배열의 각 요소를 순회해서 collback 함수의 실행 값을 누적하여 하나의 결과값을 반환한다. 기본적인 형태는 아래와 같다.
arr.reduce(callback(accumulator, currentValue, index, array), initialValue)
reduce()의 파라미터는 다음과 같다.
accumulator(누산기)
- 누적되는 값
- callback 함수의 반환값을 누적함
- initialValue를 설정한 경우, callback의 최초 호출시 initialValue 값으로 초기화
- initialValue가 없을 경우, arr의 0번째 인덱스 값으로 초기화
(즉, initialValue는 Optional한 파라미터이며, 최초 callback 함수 실행시 accumulator에 제공되는 값이다.
초기값을 제공하지 않을 경우 배열의 첫 번째 요소를 사용하고, 빈 배열에서 초기값이 없을 경우엔 에러가 발생한다.)
currentValue
- 현재 배열의 요소
index (생략 가능!)
- 현재 배열 요소의 인덱스
array (생략 가능!)
- reduce 함수를 호출한 배열 (위에서는 arr가 해당된다.)
initialValue (생략 가능!)
- callback의 최초 호출시 accumulator의 초기값
reduce 함수를 사용하여 배열의 요소들의 합계를 구하고, 해당 값을 배열의 길이로 나누어서 평균값을 계산하면 된다.
- 풀이
// 배열의 합계와 평균을 구하는 방법 : reduce() 사용
// reduce를 통해 배열의 합을 구한 뒤, 배열의 길이만큼 나누어서 평균값 계산
function solution(arr) {
// 결과를 담을 상수 변수 result 선언 후
// 함수의 인자로 받은 arr에 reduce 함수를 통해 합계를 구함
// 인자로 accumulaotr, currValue 두개만 사용한다.
// accumulaotr = sum => 누적 값을 담는 인자
// currValue => 현재 배열의 요소 값을 담는 인자
const result = arr.reduce(function add(sum, currValue) {
return sum + currValue; //즉, arr 배열 요소를 하나씩 순회하며 sum에 더한 값을 리턴해줌
}, 0); //initialValue는 0으로 전달하거나 값을 주지 않아도 동작한다.
// 위에서 구한 배열의 합계값을 배열의 길이(요소의 갯수)로 나누어 평균값 구하기
const average = result / arr.length;
//console.log(average);
return average;
}