[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])

댓글남기기