javascript 如何在Angular中使用自定义数组填充JS Highcharts图表

r6hnlfcb  于 2023-04-19  发布在  Java
关注(0)|答案(2)|浏览(147)

我尝试在Angular中使用Highcharts JS库。
我用Column Drilldown model

目标:

图表的数据部分必须如下所示:

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

我的目标是用数组填充数据部分,而不是手动输入。

数据:

我的数组看起来像这样:

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

所以Highcharts数据部分应该变成:

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: [
      myarray
    ]

...它确实失败了。也许是因为撇号的原因?
你如何纠正它使图表工作?
请看我在JSFiddle上的尝试。
任何帮助将非常感激,谢谢!

7uzetpgm

7uzetpgm1#

我不知道你正在使用的库,但我意识到 data 期望的语法是 Array< Object>,而你正在将变量 myArray 构建为 Array< string>。我建议更改代码片段:

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

用于:

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

那么 data 可以像这样接收 myArray

data: myarray
8i9zcol2

8i9zcol22#

你需要创建一个对象数组,而不是一个字符串数组。例如:

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

Highcharts.chart('container', {
  series: [{
    ...,
    data: myarray
  }],
  ...
});

现场演示:https://jsfiddle.net/BlackLabel/bhsw42r9/
API引用:https://api.highcharts.com/highcharts/series.column.data

相关问题