[javascript] map에서 reduce 사용하기

Yuni·2023년 9월 15일
0

Javascript

목록 보기
13/17

특정 키의 빈도를 포함하는 객체를 만들려고 한다.

나의 경우 여러가지의 DB에 접속해서 각각 데이터를 가져온 후 list에 담아준 상태인데
이름이 같은 사람끼리의 데이터를 갯수를 계산하여서 각각 사람마다 몇개의 글을 썼는지를 알고 싶었다.

그러기 위해서는 담아온 데이터를 redice를 사용해서 가져오려고한다
내가 가진 데이터는 user_id만을 list<map>에 담아 가져왔다

let users = [
  { user_id: "AAA"},
  { user_id: "AAA"},
  { user_id: "BBB"},
  { user_id: "AAA"}
];

// 1
let groupById = users.reduce((acc, it) =>
  ({ ...acc, [it.user_id]: (acc[it.user_id] || 0) + 1 }),
{});

// 2
const groupById = users.reduce((acc, it) => {
    acc[it.user_id] = (acc[it.user_id] || 0) + 1;
    return acc;
}, {});
groupById is {"AAA": 3, "BBB": 1}

1번과 2번의 결과는 동일하다.
웹과 연동하여 다른곳에서 사용하려고 하니 ... 이 부분이 인식을 안해서 다른 2번 방법도 찾아 사용하였다.

참고문서
https://dongmin-jang.medium.com/javascript-15%EA%B0%80%EC%A7%80-%EC%9C%A0%EC%9A%A9%ED%95%9C-map-reduce-filter-bfbc74f0debd
https://socaeri.com/entry/JS-Javascript-Reduce%EB%A1%9C-%EB%B0%B0%EC%97%B4%EC%9D%98-%ED%95%A9-%EC%A4%91%EB%B3%B5-%EA%B0%AF%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0

profile
backend developers

0개의 댓글