reduce 관련 질문드립니다.

미해결질문
조성륜 프로필

명령형을 함수형으로 바꾸는 과정 중에 질문드립니다.

reduce 내부 함수를 간단하게 해보고 싶은데 if 문은 filter 를 통해서 해결이 가능할것 같은데, 여러가지 케이스에 관해서는 어떻게 해야하는지 감이 안오네요. 예시 코드 첨부합니다.

const arr = [1, 2, 3, 4, 5, 6]



console.log(

  _.reduce((a, b) => {

    if(b % 2 == 0) return a + b * 2

    else if(b % 3 == 0) return a + b * 3

    else if(b % 5 == 0) return a + b * 5

    else return b

  },arr)

)
조성륜 프로필
조성륜 2019.05.22

else 문 에서 return 하는 값은 a 입니다.

유인동 프로필
유인동 2019.05.22

안녕하세요. 예제를 위한 예제를 만들다보면 오히려 실무에 나오지 않는 코드가 나오는 경우가 좀 있는거 같아요.

그래도 좀 고쳐서 보여드려보면 (마지막 return b가 a + b 였을거라고 예상하고?)


const arr = [1, 2, 3, 4, 5, 6];

console.log(
_.reduce((a, b) => a + b,
_.map(a =>
a % 2 == 0 ? a * 2 :
a % 3 == 0 ? a * 3 :
a % 5 == 0 ? a * 5 : a, arr)));

이런식일거 같으네요. 

이 코드가 뭐가 더 좋아진거냐 라고 생각하실 수 있는데요.

_.reduce(add) 라는 재사용 가능한 함수로 분리된점이 좋아진점이라고 볼 수 있습니다.

감사합니다.

조성륜 프로필
조성륜 2019.05.22

항상 좋은 강의감사합니다.

지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스