5

我正在运行一个 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 中方括号的理解是它们将其中的任何内容转换为字符串?

这是不起作用的:

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

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

第二次尝试来自highcharts -回想起来,可变数据导致浏览器锁定它是有道理的,因为从不仅仅是数字的字符串中减去 0 没有达到目标。

第一次尝试没有奏效也是有道理的,因为它似乎想要一个数字数组而不是一个字符串。现在到我的实际问题:

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

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

4

3 回答 3

15

试试这个:

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

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

于 2011-04-22T01:53:01.707 回答
6

由于 data 是数组类型,因此您可以将数组用于值,例如

myData = [4.5, 3.1, 6.5, 7.0, -1.3];
于 2012-06-29T08:13:28.107 回答
1

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

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

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

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

于 2012-05-03T20:35:41.857 回答