ts 对象数组快发分组
时间: 2024-06-12 11:02:14 浏览: 16
在TypeScript(简称TS)中,对象数组的快速分组(或称为按条件分组)通常是指按照某个属性或者一组规则对数组中的对象进行分类。这在数据处理和展示中非常常见,比如按照日期、类别或其他自定义字段对数据进行分组。
使用`Array.prototype.reduce()`方法和类型断言,你可以很容易地实现这个功能。下面是一个基本的例子:
```typescript
type GroupingKey = string | number;
interface GroupableObject {
[key: string]: any; // 假设有一个对象,包含一个可用于分组的属性
id: GroupingKey;
}
const objects: GroupableObject[] = [
{ name: 'A', date: '2023-01-01', id: 1 },
{ name: 'B', date: '2023-01-02', id: 2 },
{ name: 'C', date: '2023-01-01', id: 3 },
];
// 分组函数
const groupBy = (array: GroupableObject[], key: GroupingKey) => {
return array.reduce((groups: { [id in GroupingKey]: GroupableObject[] }, obj) => {
if (!groups[obj.id]) {
groups[obj.id] = [];
}
groups[obj.id].push(obj);
return groups;
}, {} as Record<GroupingKey, GroupableObject[]>);
};
// 使用
const groupedObjects = groupBy(objects, 'date'); // 如果你想要根据'date'属性分组
console.log(groupedObjects);
```
在这个例子中,`groupBy`函数接收一个对象数组和一个分组键(`GroupingKey`),然后返回一个新的对象,其键是分组键,值是具有相同键值的对象数组。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)