现在有多行数据,有科目、主体、日期字段,现在通过js将科目和主体进行分组,按日期字段大小从小到大排序
时间: 2024-03-05 21:55:10 浏览: 14
好的,我可以为您提供代码示例,假设您的数据如下所示:
```javascript
const data = [
{ subject: "Math", entity: "A", date: "2021-01-01" },
{ subject: "Math", entity: "B", date: "2021-02-01" },
{ subject: "Science", entity: "C", date: "2021-03-01" },
{ subject: "Science", entity: "D", date: "2021-01-15" },
{ subject: "Math", entity: "E", date: "2021-04-01" },
{ subject: "Science", entity: "F", date: "2021-02-15" }
];
```
现在我们可以按照科目和主体进行分组,代码如下所示:
```javascript
const groupedData = data.reduce((acc, curr) => {
const key = curr.subject + "_" + curr.entity;
if (!acc[key]) {
acc[key] = [curr];
} else {
acc[key].push(curr);
}
return acc;
}, {});
```
接下来我们可以对每个组内的数据按日期从小到大排序,代码如下所示:
```javascript
Object.values(groupedData).forEach((group) => {
group.sort((a, b) => new Date(a.date) - new Date(b.date));
});
```
最后,我们可以将结果打印出来,代码如下所示:
```javascript
console.log(groupedData);
```
输出结果如下:
```javascript
{
"Math_A": [{ subject: "Math", entity: "A", date: "2021-01-01" }],
"Math_B": [{ subject: "Math", entity: "B", date: "2021-02-01" }],
"Math_E": [{ subject: "Math", entity: "E", date: "2021-04-01" }],
"Science_C": [{ subject: "Science", entity: "C", date: "2021-03-01" }],
"Science_D": [{ subject: "Science", entity: "D", date: "2021-01-15" }],
"Science_F": [{ subject: "Science", entity: "F", date: "2021-02-15" }]
}
```
其中,每个组内的数据按照日期从小到大排序。希望这个代码示例能够对您有所帮助。