我有一个字符串变量,我将其定义为:
var regn="[1,75],[2,59],[3,66],[4,92],[5,67],[6,77],[7,75],[8,80],[9,67],[10,56],[11,67],";
我也在使用一些javascript代码,它接受数组中的值并从这些值中绘制线图。代码的部分如下所示。
var graphData = [{
data: [[1,75],[2,59],[3,66],[4,92],[5,67],[6,77],[7,75],[8,80],[9,67],[10,56],[11,67],],
color: '#77b7c5',
points: { radius: 4, fillColor: '#77b7c5' }
}
];
我正在尝试使用上面定义的变量替换数组中的数据,但是当我这样做时图形不起作用。这是我的代码:
var graphData = [{
data: [regn],
color: '#77b7c5',
points: { radius: 4, fillColor: '#77b7c5' }
}
];
我哪里出错或者我应该如何将我的字符串中的数据提供给该数组呢?
答案 0 :(得分:4)
您需要先解析字符串。这通常使用 JSON.parse
:
var regn="[[1,75],[2,59],[3,66],[4,92],[5,67],[6,77],[7,75],[8,80],[9,67],[10,56],[11,67]]";
var arr = JSON.parse(regn) // now it's an Array
如果您需要支持不支持JSON.parse
的浏览器,可以使用 JSON3
除此之外:请注意,regn有一个迷失的尾随逗号,需要包含在[]
或{}
中(对象方法也需要键,所以数组是这里的方式),所以JSON的发布方式无效(不知道是不是偶然发生了)。
答案 1 :(得分:0)
使用正则表达式解析的替代版本:
var regn="[1,75],[2,59],[3,66],[4,92],[5,67],[6,77],[7,75],[8,80],[9,67],[10,56],[11,67],";
var rez = [];
var regex = /\[(\d+),(\d+)\]/g;
var match;
while ((match = regex.exec(regn)) != null) {
rez.push([match[1], match[2]]);
}
graphData.data = rez;
答案 2 :(得分:0)
取代
var regn="[1,75],[2,59],[3,66],[4,92],[5,67],[6,77],[7,75],[8,80],[9,67],[10,56],[11,67],"
试试这个,
var regn=[[1,75],[2,59],[3,66],[4,92],[5,67],[6,77],[7,75],[8,80],[9,67],[10,56],[11,67]];
var graphData = [{
data: regn,
color: '#77b7c5',
points: { radius: 4, fillColor: '#77b7c5' }
}
];
答案 3 :(得分:0)
var parseRegn = function (regnStr) {
var pairs = regnStr.split('],['), // 1
pairStr = '';
for (var i = 0; i < pairs.length; i++) {
pairStr = pairs[i].replace(/[^\d|,]/g, ''); // 2
if (pairStr.length > 0) {
pairs[i] = pairStr.split(',', 2); // 3
}
}
return pairs; // 4
};
var parseRegn = function (regnStr) {
var pairs = regnStr.split('],['), // 1
pairStr = '';
for (var i = 0; i < pairs.length; i++) {
pairStr = pairs[i].replace(/[^\d|,]/g, ''); // 2
if (pairStr.length > 0) {
pairs[i] = pairStr.split(',', 2); // 3
}
}
return pairs; // 4
};