-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
group_by, count_by함수가 좋은건지 잘 모르겠습니다.
20.12.01 23:39 작성 조회수 143
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이 객체인 경우 그 이후 진행을 어떻게 하는게 좋은지도 궁금합니다.
감사합니다.
답변을 작성해보세요.
1
유인동
지식공유자2020.12.02
안녕하세요. :)
함수를 매번 만드실 필요는 없습니다.
강의에서 count_by 와 group_by를 만든건 reduce를 통해 이런 로직들을 구현하는 것이 편리하다라는걸 보여드리기 위해서이지 필요할때마다 함수를 만들어서 써야한다라는 이야기를 드린건 아닙니다.
reduce는 보통 프로그램의 결과입니다. 물론 그 이후에도 연산을 하려면 말씀하신대로 entires나 values를 이용하면 됩니다.
좋은 하루 되세요. :)
답변 1