/** * 按 key 分组 * @param arr 原数组 * @param key 分组依据,可以是属性名或返回键的函数 */ export const groupBy = (arr: T[], key: keyof T | ((item: T) => string)): Record => { const getKey = typeof key === "function" ? key : (item: T) => String(item[key]); return arr.reduce>((acc, item) => { const k = getKey(item); if (!acc[k]) { acc[k] = []; } acc[k].push(item); return acc; }, {}); };