1. reduce + 복잡한 함수 + acc 보다, map + 간단한 함수 + reduce 만들기
아래 코드는 복잡하다.
위 코드가 복잡하고 하는 이유는
이 reduce에서 이 users가 어떻게 생겼는지 분석하기 위해서 이 보조 함수를 만들고 있다.
그리고 시작 값을 통해서 합산하고 있다.
더 좋은 reduce는 시작 값(=0)이 없는 reduce가 더 간단한 연산을 한다.
이게 무슨 말이냐면, 아래 사진처럼 a와 b 부분이 모두 숫자인 경우에는 더 심플하게 사용할 수 있다.
하나의 함수에서 복잡하게 처리하는 것보다 a와 b를 같은 형태를 오게 한다면 복잡한 코드가 나오지 않게 된다.
아래 코드를 보면,
_.reduce((a,b) => a+b, L.map(u => u.age, users)));
형태를 사용해 대체하여 쉽고 간결하다고 볼 수 있다.
또한 코드를 조합되기에도 쉽다.
전체 코드 모습
결론
reduce 하나에 조금 복잡한 함수를 만드는 것보다,
map과 함께 사용하면서 간단한 함수로 만들도록 하자.
2. reduce 하나 보다, map + filter + reduce로 만들기
reduce 하나로 복잡한 함수 만들기
reduce 하나에 복잡한 함수를 사용하는 것 보다, map과 filter를 사용하면 함수가 간결해진다.
위 코드는 조건이 바뀔 때 훨씬 더 복잡하게 될 수 있다.
map+filter+reduce로 간단한 함수 만들기
위 코드보다, 훨씬 간결해지고 읽기 좋다.
위 코드를 지연적으로 동작 시키기
먼저 filter를 사용해서 나이를 뽑고, 더욱 간결하게 조합할 수 있다.
결론
reduce 하나를 사용하는 것 보다, map+filter를 같이 사용하는 것이 더 간결하고 좋다!
'개발일지 > JavaScript ES6' 카테고리의 다른 글
[15~16] map으로 합성하기, find 대신 L.filter 써보기 (0) | 2024.11.30 |
---|---|
[12~14] query, queryToObject (0) | 2024.11.30 |
FxJS 라이브러리 윈도우에서 사용하기 (0) | 2024.11.30 |
[8~9] 추억의 별 그리기, 구구단 (0) | 2024.11.30 |
[6~7] while을 range로, 효과를 each로 구분 (+ go함수) (1) | 2024.11.30 |