ts数据分组方法
2023-07-06 本文已影响0人
背后_542d
interface GroupedData<T> {
[key: string]: T[];
}
function groupBy<T>(array: T[], getGroupKey: (item: T) => string): GroupedData<T> {
const groupedData: GroupedData<T> = {};
for (const item of array) {
const key = getGroupKey(item);
if (!groupedData[key]) {
groupedData[key] = [];
}
groupedData[key].push(item);
}
return groupedData;
}
interface Person {
ID: string;
Name: string;
Gender: string;
Birthday: string;
}
const data: Person[] = [
{
"ID": "1",
"Name": "张三",
"Gender": "男",
"Birthday": "2020-03-24 00:00:00"
},
{
"ID": "2",
"Name": "李四",
"Gender": "男",
"Birthday": "2020-03-23 00:00:00"
},
{
"ID": "3",
"Name": "王五",
"Gender": "男",
"Birthday": "2020-03-23 00:00:00"
},
{
"ID": "4",
"Name": "赵六",
"Gender": "男",
"Birthday": "2020-03-28 00:00:00"
},
{
"ID": "5",
"Name": "田七",
"Gender": "女",
"Birthday": "2020-03-25 00:00:00"
},
{
"ID": "6",
"Name": "王五",
"Gender": "男",
"Birthday": "2020-03-22 00:00:00"
}
];
const groupedData = groupBy(data, (item) => item.Gender);
const groupedData1 = groupBy(data, (item) => item.Gender+"_"+item.Birthday);
console.log(groupedData);
console.log(groupedData1);