如何基于含createdAt的记录数组计算每月平均记录数?
问题说明
我的数据记录格式如下:
[{ createdAt }, { createdAt }, { createdAt }]
需要计算每月平均记录数,已知各月记录数示例如下:
一月 => 3 条记录 二月 => 2 条记录 ...
实现步骤
1. 统计各月记录数
遍历所有记录,提取每条数据的月份信息,用键值对结构累计每个月的记录数量:
// 假设你的记录数组名为records,createdAt为合法的日期格式(Date对象/可解析字符串) const monthlyStats = {}; records.forEach(item => { // 提取中文月份名称,比如"一月" const monthName = new Date(item.createdAt).toLocaleString('zh-CN', { month: 'long' }); // 累计计数 monthlyStats[monthName] = (monthlyStats[monthName] || 0) + 1; });
2. 计算月度平均值
根据需求选择两种计算逻辑:
- 逻辑一:仅统计有记录的月份
总记录数除以实际有数据的月份数:const total = records.length; const validMonths = Object.keys(monthlyStats).length; const avg = total / validMonths; - 逻辑二:按全年12个月计算(含无记录的月份)
总记录数除以12,无记录的月份按0计算:const total = records.length; const avg = total / 12;
注意点
- 确保
createdAt字段可以被new Date()正确解析,若为自定义格式需先做转换 - 若需要英文月份,可修改
toLocaleString的参数为'en-US'
内容的提问来源于stack exchange,提问作者asure
相关产品推荐
相关产品推荐

