0

我有一个字符串

var chartDataArrayString = '[0.00,0.00],[0.00,0.00],[0.00,0.00],[0.00,0.00],[0.00,0.00],[0.00,0.00],[0.00,0.00],[0.00,0.00],[0.00,0.00],[0.00,0.00],[8.44,10.55],[51.79,64.74]';

现在我想从这个字符串中提取每个单元并将其放入一个二维数组中。所以二维数组中有 12 个元素,每个元素都有 2 个值。所以它应该看起来像这样

var 2dArray = [[470, 870.45], [560, 920.49], [350, 540.12], [600, 901.59], [500, 750.4], [620, 401], [480, 724.4], [530, 598.98], [630, 630], [400, 876.69], [220, 1100.2], [500, 1021.9]];

我试图用','来分割它,但我发现在每个小单元里面,也有一个','。

先感谢您。

4

3 回答 3

2

只需使用JSON.parse, 并在外部数组中连接...

var data = JSON.parse("[" + chartDataArrayString + "]");

您也可以使用.eval(), 但JSON.parse只要数据符合要求,它会更好/更安全。

于 2012-07-25T02:26:23.167 回答
1

您可以在一行中执行此操作,JSON.parse()如我不是我的答案所示。

但是,既然您在谈论使用.split()这里的一种方法来使这项工作:

var dataArray = chartDataArrayString.slice(1,-1).split("],[");

for (var i=0; i < dataArray.length; i++)
    dataArray[i] = dataArray[i].split(",");

也就是说,用于.slice()删除初始[和尾随],然后拆分以"],["创建表单中的字符串数组"0.00,0.00"。然后遍历数组中的每个项目以创建具有另一个拆分的嵌套数组。

编辑:对于内部元素是数字而不是字符串,您可以执行以下操作(这使得 JSON.parse() 是“正确”解决方案更加明显):

for (var i=0; i < dataArray.length; i++){
    dataArray[i] = dataArray[i].split(",").map(Number);
}
于 2012-07-25T02:28:39.833 回答
0

您可以使用eval

var arr = eval('[' + data + ']');

或者您可以使用字符串:

var arr = [];
var bits = data.replace(/(^\[)|(\]$)/g,'').split('],[');

for (var i=0, iLen=bits.length; i<iLen; i++) {
  arr[i] = bits[i].split(',');
}

任何适合。哦,请注意,这些值将是字符串,而不是数字。

于 2012-07-25T02:33:48.257 回答