You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 06:50:30