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

如何在Angular中用自定义数组填充Highcharts钻取柱状图数据

Angular中Highcharts钻取柱状图数据格式转换问题

我在Angular项目中使用Highcharts库,采用Column Drilldown(钻取柱状图)模型。

目标

图表的data部分需要如下格式:

data: [{
  name: 'text name',
  y: 5,
  drilldown: 'text name'
}]

希望用自定义数组自动填充该data部分,而非手动编写。

原始数据

我的对象数据如下:

var arr = { "Type1": 1.44, "Type2": 0.64, "Type3": 0.20, "Type4": 1.70 }

期望转换后的格式

data: [{
      name: 'Type1',
      y: 1.44,
      drilldown: 'Type1'
    },
    {
      name: 'Type2',
      y: 0.64,
      drilldown: 'Type2'
    },
    {
      name: 'Type3',
      y: 0.20,
      drilldown: 'Type3'
    },
    {
      name: 'Type4',
      y: 1.70,
      drilldown: 'Type4'
    }
]

当前尝试及问题

我尝试构建myarray数组:

var myarray = [];

for (const [a, b] of Object.entries(arr)) {
  myarray.push("{name:'" + a + "', y:" +b + ", drilldown:'" + a + "'}")
}

得到的结果是:

["{name:'Type1', y:1.44, drilldown:'Type1'}", "{name:'Type2', y:0.64, drilldown:'Type2'}", "{name:'Type3', y:0.2, drilldown:'Type3'}", "{name:'Type4', y:1.7, drilldown:'Type4'}"]

这个格式不符合Highcharts的语法要求,我尝试将它放入data中:

data: [
  myarray
]

但图表无法正常工作,请问该如何修正?

解决方案

你当前的核心问题是把对象转换成了字符串存入数组,而Highcharts需要的是对象数组,不是字符串数组。修改循环逻辑,直接推送对象而非字符串即可:

var myarray = [];

for (const [name, y] of Object.entries(arr)) {
  myarray.push({
    name: name,
    y: y,
    drilldown: name
  });
}

之后直接将myarray赋值给data:

data: myarray

这样转换后的数组就是Highcharts需要的对象结构,图表就能正常渲染了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:05:07