我正在运行一个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不是浮点数组是实际问题。
提前感谢您提供的任何见解。
答案 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] * /) }]