lisp: (reduce + 복잡한 함수 + acc) 보다 (map + 간단한 함수 + redcue)가 낫다.

이토니·2024년 1월 18일
0

JavaScript

목록 보기
30/33
post-thumbnail

만능 reduce? No!

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>02/1</title>
  <script src="../fx.js"></script>
</head>
<body>
    
<script>
const users = [
  { name: 'AA', age: 35 },
  { name: 'BB', age: 26 },
  { name: 'CC', age: 28 },
  { name: 'CC', age: 34 },
  { name: 'EE', age: 23 }
];

reduce + 복잡한 함수 + acc

console.log(
  _.reduce((total, u) => total + u.age, 0, users));
  • reduce에서는 users가 어떻게 생겼는지 분석하여 그것에 맞추어 보조함수를 만들고 있다.
  • 시작값 (0)을 통해 합산한다.
  • 하나의 보조함수에서 복잡하게 처리가 되었다.

시작값이 없는 reduce가 더 간단한 연산을 한다.

console.log(_.reduce((a, b) => a + b, [1, 2, 3]));
  • a,b가 같은 형으로 들어오면 보조함수가 보다 심플해질 수 있다.
  • 집어넣기 전에 모든 데이터가 같은 형으로 들어올 수 있도록 해주면 복잡해지지 않는다.

map + 간단한 함수 + redcue

console.log(
  _.reduce((a,b) => a + b, L.map(u => u.age, users)));
  • map을 하면서 user의 age를 뽑는다.
  • map으로 하나의 형만 남아있는 상태로 바꾼다.
const add = (a, b) => a + b;
  • 나이를 더하는 보조함수이다.
  • 형이 같은 인자가 2개인 함수는 심플하다.
profile
cool & soft codes

0개의 댓글