JavaScript:如何提取字符串中的复杂内容

JavaScript : How to extract complex content in a string

本文关键字:字符串 复杂 提取 何提取 JavaScript      更新时间:2024-01-29

我有一个字符串

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]';

现在,我想从这个字符串中提取每个单元,并将其放入一个二维数组中。因此,在2D阵列中将有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]];

我试着用","来分割它,但我发现每个小单元里都有一个","。

提前谢谢。

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

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

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

您可以使用JSON.parse()在一行中完成,如am not i am的答案所示。

但既然你在谈论使用.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"的字符串数组。然后遍历数组中的每个项,以创建具有另一个拆分的嵌套数组。

EDIT:如果内部元素是数字而不是字符串,您可以执行以下操作(这使得JSON.parse()是"正确"的解决方案变得更加明显):

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

您可以使用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(',');
}

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