// Created on savesnippets.com ยท https://savesnippets.com/3XgD8ScbxfKK7k export function groupBy( items: readonly T[], by: (item: T) => K, ): Record { const out = {} as Record; for (const item of items) { const k = by(item); (out[k] ??= []).push(item); } return out; } const users = [ { name: 'Alice', team: 'A' }, { name: 'Bob', team: 'B' }, { name: 'Cara', team: 'A' }, ]; const byTeam = groupBy(users, u => u.team); // { A: [Alice, Cara], B: [Bob] }