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;
}

分组前数据

 

 

分组之后数据

 

posted @ 2022-08-11 09:30  匆匆,不惑之年  阅读(684)  评论(0)    收藏  举报