반응형
문제 설명
정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.
제한 조건
- arr은 길이 1 이상, 100 이하인 배열입니다.
- arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.
문제 풀이
function solution(arr) {
let answer = 0;
for (let i = 0; i < arr.length; i++) {
answer += arr[i];
}
return answer/arr.length;
}
주어진 배열의 개수만큼 나눠야하니까 answer 을 arr.length로 나누었다.
다른 사람 풀이
function solution(arr) {
return.reduce((a, b) => a + b) / arr.length;
}
reduce()* 메서드와 화살표 함수를 사용하였음
*reduce()
리듀서(reducer) 함수를 실행하고 하나의 결과값을 반환한다.
arr.reduce(callback[, initialValue])
reduce()는 빈 요소를 제외하고 자신을 호출한 배열의 모든 요소를 순회하며 인수로 전달받은 콜백 함수를 반복 호출한다.
- 누산기 (acc - accumulator) : 누산기는 콜백의 반환값을 누적한다. 콜백 이전 반환값 또는 콜백의 첫 번째 호출이면서 initialValue를 제공한 경우에는 initialValue의 값이다.
- 현재 값 (cur - currentValue) : 처리할 현재 요소
- 현재 인덱스 (idx - currentIndex) : 처리할 현재 요소의 인덱스
- 원본 배열 (src - array) : reduce()를 호출한 배열
콜백의 최초 호출 때 accumulator와 currentValue는 다음 두 가지 값 중 하나를 가질 수 있다.
- reduce() 함수 호출에서 initialValue를 제공한 경우 : accumulator = initialValue, currentValue는 배열의 첫 번째 값과 같다.
- initialValue를 제공하지 않은 경우 : accumulator는 배열의 첫 번째 값과 같고 currentValue는 두 번째와 같다.
만약 arr = [1,2,3,4] 일 때, initialValue = 0이라면 acc = 0, currentValue = 1, index = 0 이 된다.
반응형