옥수수, 기록
고차 함수 막히던문제 해결 본문
1. 단순한 문제 해결
function getLengthOfElements(arr) {
// arr에 string 타입요소 배열
// 배열을 입력받아(arr) 각 요소의 길이를 요소로 갖는 새 배열 리턴
// 반드시 arr.map을 사용할 것
arr.map((string) => { // 여기 return을 붙이지 않아 계속 undefined가 나오던 것.. 허무
return string.length;
})
}
함수안에 고차함수를 또 사용할 때는 return 이 함수를 사용한 만큼 들어간다는 사실.. 잊지말자
2.
function computeAverageOfNumbers(arr) {
//
const a = arr.reduce((acc, cur) => {
return acc + cur;
})
return (arr.length > 0 ? a / arr.length : 0)
}
arr에는 number타입 요소가 들어가는 배열이 오고
그 배열의 모든 요소의 평균을 출력하는 문제였다.
다 해결되고 빈 배열이 들어갔을 때 자꾸
TypeError: Reduce of empty array with no initial value
at Array.reduce
라고 출력되길래 뭔가 했더니 Array.reduce 메서드는 길이가 0이거나 초기값이 존재하지 않는 배열인 경우 TypeError를 반환한다고 한다.
function computeAverageOfNumbers(arr) {
//
const a = arr.reduce((acc, cur) => {
return acc + cur;
}, 0) // << 초기값 0을 넣어준다
return (arr.length > 0 ? a / arr.length : 0)
}
문제 해결
- 이제arr에 []이 들어갔을 때 정상적으로 0이 출력된다.
Comments