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

Node.js中如何将MySQL查询响应转换为带唯一键的多数组结构

Node.js 格式转换实现代码

直接复制以下代码到你的Node.js项目中运行即可:

// 填入你从MySQL拿到的原始查询结果
const mysqlRawData = [
  {created_at:'06-23-21, 23:33:43',user_count:1,user:"user1"},
  {created_at:'06-23-21, 20:12:50',user_count:4,user:"user2"},
  {created_at:'06-23-21, 19:04:10',user_count:15,user:"user1"},
  {created_at:'06-23-21, 19:04:10',user_count:26,user:"user2"},
  {created_at:'06-23-21, 16:11:56',user_count:46,user:"user3"}
]

const transform = (raw) => {
  // 提取时间列表,顺序和原始数据顺序一致
  const timeArr = raw.map(i => i.created_at)
  // 提取去重用户列表
  const userArr = [...new Set(raw.map(i => i.user))]

  // 初始化结果结构,用户数组默认全填0
  const res = {
    data: { time: timeArr }
  }
  userArr.forEach(u => res.data[u] = new Array(timeArr.length).fill(0))

  // 遍历原始数据填值
  raw.forEach(i => {
    const idx = timeArr.indexOf(i.created_at)
    res.data[i.user][idx] = i.user_count
  })

  return res
}

// 输出转换后的结果
console.log(JSON.stringify(transform(mysqlRawData), null, 2))

补充说明

  • 如果你需要调整时间排序,在提取timeArr后添加排序逻辑即可,示例按时间升序排列:
    timeArr.sort((a, b) => new Date(a) - new Date(b))
    
  • 如果同一个时间同一个用户存在多条统计数据,需要累加数值的话,将赋值代码修改为:
    res.data[i.user][idx] += i.user_count
    

内容的提问来源于stack exchange,提问作者hassan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 05:06:02