1、需要进行分组的数据,根据 type 进行分组
let ListData =
[{ type: sh1, name: 'table1', EsGrade: 1, OrderDt: '2019-12-01' },
{ type: sh2, name: 'table1', EsGrade: 5, OrderDt: '2019-12-03' },
{ type: sh1, name: 'table2', EsGrade: 4, OrderDt: '2019-12-02' },
{ type: sh2, name: 'table2', EsGrade: 7, OrderDt: '2019-12-04' }];
2. 分组函数,返回最后对象的value,则返回值是个数组
const groupBy=(list:any, type:string)=>{
const groups={};
const LastList:any[]=[];
list.forEach(element:any)=>{
const group=element[type];
groups[group]= groups[group]||[];
groups[group].push(element);
}
return Object.values(groups);
}
3. 根据 type分组,执行分组函数
groupBy(ListData,'type');
函数的输出结果为
调用函数的返回值如下:
// [array(2),array(2)]
// 0:[{type: sh1, name: 'table1', EsGrade: 1, OrderDt: '2019-12-01'},{ type: 1, name: 'table2', EsGrade: 4, OrderDt: '2019-12-02'}]
// 1:[{type: 2, name: 'table1', EsGrade: 5, OrderDt: '2019-12-03'},{ type: 2, name: 'table2', EsGrade: 7, OrderDt: '2019-12-04'}]
// ]
groups这个对象的值是
// {sh1:array(2),sh2:array(2)}
// {sh1:[{type: sh1, name: 'table1', EsGrade: 1, OrderDt: '2019-12-01'},{ type: 1, name: 'table2', EsGrade: 4, OrderDt: '2019-12-02'}]
// sh2:[{type: sh2, name: 'table1', EsGrade: 5, OrderDt: '2019-12-03'},{ type: 2, name: 'table2', EsGrade: 7, OrderDt: '2019-12-04'}]
// }