TypeScript 对数组中的对象按相同值进行分组
TS 对数组中的对象按相同值进行分组
const listData = [
{ firstName: "Rick", lastName: "Sanchez", size: 18 },
{ firstName: "Morty", lastName: "Smith", size: 6 },
{ firstName: "Jerry", lastName: "Smith", size: 3 },
{ firstName: "Beth", lastName: "Smith", size: 0 },
{ firstName: "Summer", lastName: "Smith", size: 0 },
{ firstName: "Rick", lastName: "Sanchez", size: 18 },
{ firstName: "Morty", lastName: "Smith", size: 6 },
];
【原型:】
const sortClass=(sortData:listData[])=>{
const groupBy=(array:listData[],f:Function)=>{
const groups:{
[key: string]: listData[],
}={};
array.forEach((item)=>{
const group=JSON.stringify(f(item));
groups[group]=groups[group] || [];
groups[group].push(item);
});
return Object.keys(groups).map((group) =>{
return groups[group];
});
};
const sorted = groupBy(sortData, (item: listData) =>{
return item.id;
});
return sorted;
};
【封装成方法】【//对数组中的对象按相同值进行分组】
private ttt(sortData:HeroData[]){
const groupBy=(array:HeroData[],f:Function)=>{
const groups:{
[key: string]: HeroData[],
}={};
array.forEach((item)=>{
const group=JSON.stringify(f(item));
groups[group]=groups[group] || [];
groups[group].push(item);
});
return Object.keys(groups).map((group) =>{
return groups[group];
});
};
const sorted = groupBy(sortData, (item: HeroData) =>{
return item.id;
});
return sorted;
}
分组前数据
分组之后数据