用JavaScript按天统计@timestamp对应的data.message API请求次数
按天统计API请求次数并格式化输出(JavaScript实现)
实现思路
- 拉取目标JSON数据
- 将每条日志的
@timestamp转换为YYYY-MM-DD格式的日期字符串,作为分组依据 - 用对象存储每日的
data.message条目总数并累加统计 - 按指定格式输出最终统计结果
完整代码实现
// 处理日志统计的异步函数 async function processApiLogs() { try { // 拉取目标数据源 const response = await fetch('https://run.mocky.io/v3/1e7e5b56-1ae7-4212-92a1-1b233707f495'); if (!response.ok) throw new Error('数据拉取失败'); const logs = await response.json(); const dailyStats = {}; // 遍历日志,按天分组统计 logs.forEach(log => { // 提取YYYY-MM-DD格式的日期作为统计键 const dateKey = new Date(log['@timestamp']).toISOString().split('T')[0]; // 累加当日条目数 dailyStats[dateKey] = (dailyStats[dateKey] || 0) + 1; }); // 按要求格式输出结果 Object.entries(dailyStats).forEach(([date, count]) => { console.log(`On ${date} there were ${count}x api hits based on data.message`); }); return dailyStats; } catch (error) { console.error('处理出错:', error.message); } } // 执行统计逻辑 processApiLogs();
关键细节说明
- 日期分组逻辑:通过
toISOString().split('T')[0]快速提取UTC标准日期,确保同一自然日的日志被正确归组 - 统计效率:使用普通对象存储计数,遍历一次即可完成统计,时间复杂度为O(n)
- 异常处理:包含了请求失败、数据解析失败的捕获逻辑,避免程序意外崩溃
- 输出格式:严格匹配需求中的字符串模板,直接输出符合要求的统计结果
内容的提问来源于stack exchange,提问作者Kia Kalista
相关产品推荐
相关产品推荐

