Highcharts如何使用JavaScript变量作为系列数据源?

时间:2011-04-22 01:48:56

标签: javascript arrays string type-conversion highcharts

我正在运行一个asp.net代码隐藏,它创建一个字符串变量,该变量包含由逗号分隔的浮点集合。在C#

中有类似的东西
string myCString = "4.5, 3.1, 6.5, 7.0, -1.3";

然后,此变量进入asp.net网页,并将其分配给JavaScript变量:

var myJString = '<%=myCString %>';

现在我们进入Highcharts,其中普通系列的语法如下所示:

series: [{
     name: 'Series1',
     data: [1.1, 3.8, 5.3, 9.8, 5.0]
       }]

我想要做的是将myJString分配给系列的数据字段。我尝试了两种方法,但都没有用。解决方案可能是微不足道的,但我甚至不是一个热心的程序员。看起来问题的核心是Highcharts期望一组数字而不是字符串。但是,我对JavaScript中方括号的理解是它们将内部的任何内容转换为字符串?

以下是 NOT 工作的内容:

series: [{
     name: 'Series1',
     data: myJString    // does not work
       }]

series: [{
     name: 'Series1',
     data: myJString - 0    // does not work either
       }]

回想起来,第二次尝试来自highcharts - variable data causes browser lockup,因为它不起作用,因为从字符串中减去0不仅仅是一个数字达不到目标。

第一次尝试不起作用也是有意义的,因为它似乎想要一个数字数组而不是字符串。现在我的实际问题:

我可以在JavaScript中廉价地转换我的逗号分隔浮点数字符串,这样我就可以在数据字段中使用它,如果是这样,我该怎么做?在代码隐藏中执行此操作并将数组传递给JavaScript然后使用数组尝试整个事情会更好(性能明智)吗?这假设myJString不是浮点数组是实际问题。

提前感谢您提供的任何见解。

3 个答案:

答案 0 :(得分:13)

试试这个:

data: JSON.parse("[" + myJString + "]")

基本上,这会将字符串的内容格式化为JSON数组。然后parse函数将字符串反序列化为JavaScript数组。

要使其正常运作,您需要添加json2.js

答案 1 :(得分:5)

由于数据是数组类型,因此可以使用数组作为

之类的值
myData = [4.5, 3.1, 6.5, 7.0, -1.3];

答案 2 :(得分:0)

另一个简单的方法是使用JavaScript String.split()函数,因此。

系列:[{      名称:'Series1',      数据:myJString.split(',')        }]

如果您不确定逗号之后是否有空格,请使用RegEx。

系列:[{      名称:'Series1',      data:myJString.split(/,[\ d] * /)        }]