정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해라.
<script>
function solution(arr) {
var answer = 0;
return answer;
}
</script>
제한사항
입출력 예시
arr | return |
---|---|
[1,2,3,4] | 2.5 |
[5,5] | 5 |
<script>
function solution(arr) {
const answer = arr.reduce((a, b) => {
return a + b
}, 0) / arr.length
return answer
}
// => 테스트 통과!
</script>
길이 1 이상, 100 이하 배열인 arr의 값을 모두 합산한 값과, arr이 가진 배열의 개수를 나누면 평균을 구할 수 있다.
reduce()
메소드는 배열의 각 요소에 대해 주어진 reducer 함수를 실행하고, 하나의 결과값을 반환한다.
<script>
array.reduce(function(accumulater, currentValue, currentIndex, array) {
return accumulator + currentValue;
}, initialValue);
// 또는
array.reduce((accumulater, currentValue, currentIndex, array) => {
return accumulater + currentValue;
}, initialValue);
</script>
reduce()
는 아래의 네 가지 인수를 받아 실행합니다.
accumulater(acc)
콜백(callback)에서 반환 받은 값을 누적한 값.
콜백의 첫 번째 호출이면서 initialValue
값을 적용한 경우, accumulater
는 initialValue
값을 그대로 받는다.
currentValue(cur)
처리할 현재 요소.
currentIndex(idx)
처리할 현재 요소의 인덱스.
initialValue
값을 적용한 경우, 0또는 1부터 시작.
initialValue
콜백의 최초 호출에서 첫 번째 인수에 제공하는 값.
초기 값을 제공하지 않을 경우, 배열의 첫 번째 요소를 사용.
빈 배열에서 초깃값 없이 reduce()
를 호출하면 오류가 발생.
위의 설명을 통해 reduce()
를 실행하면 배열의 모든 값을 합산한 값을 출력할 수 있다.
<script>
arr = [1,2,3,4]
arr.reduce((acc, cur, idx, arr) => {
return acc + cur
}, 0);
// => 10
</script>
콜백은 4번 호출되며, 각 호출의 인수와 반환값은 다음과 같다.
호출 | acc | cur | idx | arr | 반환값 |
---|---|---|---|---|---|
1번 | 0 | 1 | 1 | [1, 2, 3, 4] | 1 |
2번 | 1 | 2 | 2 | [1, 2, 3, 4] | 3 |
3번 | 3 | 3 | 3 | [1, 2, 3, 4] | 6 |
1번 | 6 | 4 | 4 | [1, 2, 3, 4] | 10 |
아래의 메소드를 사용하면 배열의 개수를 출력할 수 있다.
<script>
const arr = [1, 2, 3, 4];
arr.length;
// => 4
</script>
<script>
function solution(arr){
var sum = 0;
for(var i=0; i<arr.length; i++)
sum += arr[i];
return sum/arr.length;
}
</script>
끝.
reduce라니.. 콜백이라니.. 천재🙄