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

如何转换对象数组为Highcharts多折线图所需的输入格式?

实现逻辑

  • 第一步:从原数组提取所有不重复的日期,按时间升序排序,作为统一的x轴基准。
  • 第二步:构造ID和日期的二维映射表,存储每个ID对应各个日期的Count值,方便后续快速查找。
  • 第三步:遍历所有ID,按排序后的日期列表逐个匹配Count值,无匹配值的位置填充null,生成最终格式的数组。

完整实现代码

function transformData(original) {
  // 生成升序排列的去重日期列表
  const sortedDates = Array.from(new Set(original.map(item => item.date)))
    .sort((dateA, dateB) => new Date(dateA) - new Date(dateB))
  
  // 构建ID-日期的Count映射
  const idDateCountMap = {}
  original.forEach(item => {
    if (!idDateCountMap[item.ID]) {
      idDateCountMap[item.ID] = {}
    }
    idDateCountMap[item.ID][item.date] = item.Count
  })

  // 生成符合要求的结果
  return Object.keys(idDateCountMap).map(id => {
    return {
      Identity: id,
      data: sortedDates.map(date => {
        return idDateCountMap[id].hasOwnProperty(date) ? idDateCountMap[id][date] : null
      })
    }
  })
}

// 测试调用示例
const Original = [
  {
    "date": "1997-09-29",
    "Count": 100,
    "ID": "AB12-R"
  },
  {
    "date": "1997-12-30",
    "Count": 104.7,
    "ID": "AB13-R"
  },
  {
    "date": "1998-03-30",
    "Count": 981,
    "ID": "BA12-R"
  },
  {
    "date": "1998-06-01",
    "Count": 341,
    "ID": "BA12-R"
  }
]
const result = transformData(Original)
console.log(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:36:02