/** * 给对象数组按指定键值分组 * @example * let arr = [{type:'a'}, {type:'a'}, {type:'b'}] * groupArray(arr) // => {a:[{type:'a'},{type:'a'}], b:[{type:'b'}]} */ export function groupArray(arr: T[], key: string): { [group: string]: T[] } { let map: any = {} arr.forEach((item: any) => { let value = item[key] if (typeof value !== "string") { if (value === undefined) value = "undefined" if (value === null) value = "null" if (value === false) value = "false" if (value === true) value = "true" } let group = map[value] if (!group) { group = [] map[value] = group } group.push(item) }) return map }