z-utils-ts
Version:
使用TypeScript编写的工具函数库
22 lines (21 loc) • 660 B
text/typescript
// 定义一个接口,键为字符串,值为任意类型
interface StringKeyObject {
[key: string]: any;
}
/**
* 分组函数
* @param {Array} arr
* @param {string|Function} generatekey
* @returns {object}
*/
export function group<T>(arr: any[], generatekey: string | Function): Object {
if (typeof generatekey === 'string') {
const proName = generatekey;
generatekey = (item: StringKeyObject) => item[proName];
}
return arr.reduce((result, currentValue) => {
const key = generatekey(currentValue);
(result[key] = result[key] || []).push(currentValue);
return result;
}, {});
}