在JavaScript中,可以使用reduce()方法来按日期分组并计算平均值。下面是一个示例代码:
// 假设有一个包含日期和数值的数组
const data = [
{ date: '2021-01-01', value: 10 },
{ date: '2021-01-01', value: 20 },
{ date: '2021-01-02', value: 30 },
{ date: '2021-01-02', value: 40 },
{ date: '2021-01-03', value: 50 },
];
// 使用reduce()方法按日期分组并计算平均值
const result = data.reduce((acc, item) => {
// 检查当前日期是否已存在于累加器中
const index = acc.findIndex((group) => group.date === item.date);
if (index !== -1) {
// 如果日期已存在,则将当前数值累加到该分组中
acc[index].sum += item.value;
acc[index].count += 1;
} else {
// 如果日期不存在,则创建一个新分组
acc.push({ date: item.date, sum: item.value, count: 1 });
}
return acc;
}, []);
// 计算每个分组的平均值
result.forEach((group) => {
group.average = group.sum / group.count;
});
console.log(result);
运行以上代码,将得到以下输出:
[
{ date: '2021-01-01', sum: 30, count: 2, average: 15 },
{ date: '2021-01-02', sum: 70, count: 2, average: 35 },
{ date: '2021-01-03', sum: 50, count: 1, average: 50 }
]
以上代码通过reduce()方法按日期分组并计算每个分组的总和和计数,然后通过forEach()方法计算每个分组的平均值。