💻 Dev

🛠️ 처음부터 만드는 GroupBy — 배열을 기준에 따라 그룹화하기

문제 상황


같은 카테고리의 데이터들을 묶거나, API 응답을 분류해야 할 때가 있죠.
```typescript
const users = [
{ id: 1, role: 'admin' },
{ id: 2, role: 'user' },
{ id: 3, role: 'admin' },
];
// 역할별로 그룹화하고 싶다면?
```

구현


```typescript
function groupBy(
array: T[],
keyFn: (item: T) => K
): Record {
return array.reduce((acc, item) => {
const key = keyFn(item);
if (!acc[key]) {
acc[key] = [];
}
acc[key].push(item);
return acc;
}, {} as Record);
}
```

사용 예시


```typescript
const grouped = groupBy(users, user => user.role);
// { admin: [{id: 1, ...}, {id: 3, ...}], user: [{id: 2, ...}] }
// 복잡한 키도 가능
const byMonth = groupBy(
transactions,
tx => new Date(tx.date).toISOString().slice(0, 7)
);
```

실무 팁


  • null 처리: `keyFn`이 null을 반환할 수 있다면 `String(key)` 추가

  • 중첩 그룹화: `groupBy`를 중첩 호출하거나 키 함수에서 여러 조건 조합

  • Map 활용: 객체 대신 `Map`을 반환하면 원시값 키도 완벽하게 처리
  • 💬 0
    👁 0 views

    Comments (0)

    💬

    No comments yet.

    Be the first to comment!