在javascript中将字符串转换为数组数组

Convert string into an array of arrays in javascript

我有一个字符串,如下所示:

1
my_string ="['page1',5],['page2',3],['page3',8]";

我想将此转换为以下内容:

1
my_array = [['page1',5],['page2',3],['page3',8]];

我知道有一个split函数需要指定分隔符。当我这样做时:

1
my_string.split(',');

我得到了以下结果:

1
 ["['page1'","5]","['page2'","3]","['page3'","8]"]


您可以使用JSON.parse().replace()使您的字符串成为可分析的字符串,如下所示:

1
2
3
4
const my_string ="['page1',5],['page2',3],['page3',8]",
stringified = '['+my_string.replace(/'/g, '"')+']';

console.log(JSON.parse(stringified));

或者,您可以使用Function构造函数来"疯狂地"分析您的JSON:

1
2
3
4
const  my_string  ="['page1',5],['page2',3],['page3',8]";
arr = Function('return [' +  my_string + ']')();

console.log(arr);


可以使用eval()函数将字符串转换为数组。请参见下面的代码。

1
2
3
4
5
my_string ="['page1',5],['page2',3],['page3',8]";

my_array = eval(`[${my_string}]`);

console.log(my_array);

但是,如果使用不当,使用eval()函数会带来一系列缺点。在使用任何严重代码之前,请仔细阅读此答案。


首先用"]、["拆分字符串,得到一个像下面这样的数组

1
splitted_string = ["[page1,5","[page2,3" ,"[page3,8"];

然后循环这个数组,去掉"["字符,得到一个像下面这样的数组

1
splitted_string = ["page1,5","page2,3" ,"page3,8"];

最后循环此数组,并用","分隔每个元素。维奥拉!你得到了你想要的

1
splitted_string =  [['page1',5],['page2',3],['page3',8]];