inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바스크립트로 알아보는 함수형 프로그래밍 (ES5)

접기 - group_by, count_by, 조합

group_by, count_by함수가 좋은건지 잘 모르겠습니다.

해결된 질문

276

김민수

작성한 질문수 2

0

안녕하세요? 좋은강의를 무료로 공개해 주셔서 감사한 마음으로 잘 듣고있습니다!

공부하다 map, filter, reduce에 비해 group_by, count_by함수는 좋다는 느낌이 들지 않아서 답답함을 해소할 수 있을까 싶어 질문 드립니다.

제가 그냥 생각해 봤을때는 group_by를 통해 멋지게 그룹핑을 했다면 그 결과를 reduce와 같은 함수를 이용해서 집계를 하는게 좋다고 생각을합니다. 예를들어서 다음과 같이 동작했으면 좋겠습니다.

_go(

  [{a:1, b:1}, {a:2, b:2}, {a:3, b:1}, {a:4, b:3}],

  list => _group_by(list, obj=>obj.b),

  grouped => _group_reduce(grouped, (a_sum, obj)=>a_sum+obj.a, 0),

  console.log,

)

// 결과

{

  '1': 4, 

  '2': 2,

  '3': 4,

}

이런 저의 바람과는 달리 카운팅 이라는 단순한 동작을 위해서도 새롭게 'count_by함수를 만들어 낸다'는점이 앞에서 배운 '함수형'이라는 느낌이 나지 않는거 같습니다.

이렇게 된다면 위의 예제와 같이 group_by된 결과에서 a의 값을뽑아 모두 더하는 작업을 하려면 '_group_by_add_a'와 같은 함수를 만들어야 하고, 또 다른 작업을 하려면 또 새롭게 무언가를 만들어내야 할 거 같습니다.

그리고 map, filter, reduce등은 array like를 만들어 내고 이 결과는 go를통해 계속하여 연결해 쓸 수 있는 느낌이었지만, group_by, count_by는 객체를 리턴해 버려서 더이상의 진행은 없는 느낌이 듭니다. (물론 Object.values후 flat 하면 다시 Array가 되긴 합니다만, 이렇게 해버리면 에초에 그룹으로 묶은 의미가 사라지는게 아닐까 합니다.)

위와같이 그룹에 대해서 또 다시 연산하는 무언가를 나중에 배우는 건가요? 아니면 함수형은 마지막을 만들어둔 집계함수로 마무리하는게 끝인 건가요? 그리고 return이 객체인 경우 그 이후 진행을 어떻게 하는게 좋은지도 궁금합니다.

 

감사합니다.

함수형-프로그래밍 javascript

답변 1

1

MDU 유인동

안녕하세요. :)

함수를 매번 만드실 필요는 없습니다. 

강의에서 count_by 와 group_by를 만든건 reduce를 통해 이런 로직들을 구현하는 것이 편리하다라는걸 보여드리기 위해서이지 필요할때마다 함수를 만들어서 써야한다라는 이야기를 드린건 아닙니다. 

reduce는 보통 프로그램의 결과입니다. 물론 그 이후에도 연산을 하려면 말씀하신대로 entires나 values를 이용하면 됩니다. 

좋은 하루 되세요. :)

FxTS를 이용한 함수형 프로그래밍에 대해 궁금한점이 있습니다.

1

292

1

안녕하세요. 유인동님 함수형 프로그래밍 2편을 구매했는데

0

351

2

_go함수 _pipe.apply(null, fns) 사용하는 이유

0

404

2

커리큘럼 관련 질문 입니다.

0

347

2

ES5 강의를 듣고 ES6 강의를 듣는게 좋을까요?

0

861

2

_get 함수 부분이 너무 이해가 안갑니다 ㅠ

0

656

2

거르기 함수 중 compact 질문드립니다.

0

476

1

강의 잘봤습니당

0

452

1

다형성 파트 _each함수 내부 코드 관련 질문

0

323

1

FP 함수 표준이 있는지 궁금합니다.

0

365

2

_curryR 을 적용한 _map 혹은 _filter함수 질문입니다!!

0

451

4

_reduce 질문 있습니다!

0

388

1

0:24 평가시점

0

255

2

10:18 아무래도 클로저가 리스프? 다 보니까

0

309

1

평가시점이 뭐에요? 16:30초 부터

0

367

1

강의자료

0

291

1

pipe 함수에 질문있습니다

0

284

1

대입문

0

343

1

Call을 사용하는 이유

0

287

1

좋은 강의 감사합니다.

0

274

1

순수함수에 대해서 질문있습니다.

0

428

1

13:40 _filter함수 질문

0

281

1

소스 내 변수형

0

227

1

Apply와 Call의 차이

0

230

1