[Day 21] Array.prototype.reduce()
reduce()
문제 1. 배열을 입력받아, 해당 배열에 들어있는 요소들 중 최대값을 찾는 함수를 작성하세요.
// reduce 이용
const max = arr => {
// reduce를 쓸 때
// '누적값의 역할'이 무엇인지를 잘 정하는 것이 중요하다.
// 누적값: 지금까지 봤던 숫자 중에 제일 큰 수
return arr.reduce((acc, item) => {
// 안에 들어있는 함수의 반환값이, 다음 단계의 누적값이 된다.
if(acc > item) {
return acc
} else {
return item
}
}, 0)
}
max([1, 2, 7, 3, 5, 4])
- 위 코드는 삼항 연산자를 이용해 더 짧게 표현 가능하다.
// 삼항 연산자 이용
const max = arr => {
return arr.reduce((acc, item) => acc > item ? acc : item, 0)
}
max([1, 2, 7, 3, 5, 4])
- 만약 배열 안의 수가 전부 음수라면 누적값을
-Infinity
로 바꿔줘야 한다.
// 음수의 최대값 비교를 위해 누적값을 -Infinity로 시작
const max = arr => {
return arr.reduce((acc, item) => acc > item ? acc : item, -Infinity)
}
max([-1, -2, -7, -3, -5, -4])
댓글남기기