묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결함수형 프로그래밍과 JavaScript ES6+
reduce iter인자가 없을 경우
이렇게 구현한 것과 주석친 부분(강의에서 코드)과는 어떤 차이가 있을까요? 이것저것 넣어보는데 잘 동작하는 것 같아서 질문 드립니다.
-
해결됨자바스크립트로 알아보는 함수형 프로그래밍 (ES5)
group_by, count_by함수가 좋은건지 잘 모르겠습니다.
안녕하세요? 좋은강의를 무료로 공개해 주셔서 감사한 마음으로 잘 듣고있습니다! 공부하다 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이 객체인 경우 그 이후 진행을 어떻게 하는게 좋은지도 궁금합니다. 감사합니다.