ts数据分组方法

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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容