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

如何基于指定字段转换JavaScript对象以适配Highcharts多折线图输入

实现方案

核心思路

  • 先提取所有唯一日期并按时间升序排序,作为X轴基准,保证所有系列的data数组长度和日期顺序一致
  • 对原始数据按ID分组,缓存每个ID对应各日期的计数值
  • 遍历每个ID,基于唯一日期数组生成data字段,匹配到计数值则填充,否则填null

完整代码

const data = [{"date":"1997-09-29","Count":100,"ID":"AB12-R"},{"date":"1997-12-30","Count":104.7,"ID":"AB13-R"},{"date":"1997-12-30","Count":1192,"ID":"BA12-R"},{"date":"1998-03-30","Count":981,"ID":"BA12-R"},{"date":"1998-06-01","Count":341,"ID":"BA12-R"}];

// 提取去重后按时间升序排列的日期数组
const uniqueDates = [...new Set(data.map(item => item.date))].sort((a, b) => new Date(a) - new Date(b));

// 按ID分组存储日期和计数的映射
const idGroup = {};
data.forEach(item => {
  if (!idGroup[item.ID]) {
    idGroup[item.ID] = {};
  }
  idGroup[item.ID][item.date] = item.Count;
});

// 生成Highcharts要求的系列数据
const result = Object.entries(idGroup).map(([id, dateCountMap]) => ({
  Identiy: id,
  data: uniqueDates.map(date => dateCountMap[date] ?? null)
}));

console.log(result);

兼容说明

如果运行环境不支持ES2020的空值合并运算符??,可将dateCountMap[date] ?? null替换为:

dateCountMap.hasOwnProperty(date) ? dateCountMap[date] : null

可以避免0等合法计数值被误判为不存在。

内容的提问来源于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.02 18:09:01