12

我有一个字符串

 var myString = "['Item', 'Count'],['iPad',2],['Android',1]";

我需要将其转换为一个数组,其中:

myArray[0][0] = 'Item';
myArray[0][1] = 'Count';
myArray[1][0] = 'iPad';
myArray[1][1] = 2;

ETC...

字符串的长度可能不同,但始终采用上述格式。我尝试过拆分和拼接以及我能想到的任何其他“ing”,但我无法理解。

有人可以帮忙吗?

4

4 回答 4

20

如果字符串肯定是安全的,最简单的方法是将[和连接]到开头和结尾,然后eval是它。

var arr = eval("[" + myString + "]");

如果您想要更高的安全性,请为您的字符串使用双引号,并JSON.parse()以相同的方式使用。

var myString = '["Item", "Count"],["iPad",2],["Android",1]';

var arr = JSON.parse("[" + myString + "]");

这将限制您使用受支持的 JSON 数据类型,但鉴于您的示例字符串,它会正常工作。

于 2012-11-29T16:20:13.090 回答
1

试试这个 :

JSON.parse("[['Item', 'Count'],['iPad',2],['Android',1]]".replace(/\'/g,"\""))

在此处输入图像描述

于 2012-11-29T16:25:08.347 回答
0

写你的代码

var myString = "[['Item', 'Count'],['iPad',2],['Android',1]]";

并且只是

 var arr = eval(myString);
于 2012-11-29T16:20:54.573 回答
0

我尝试使用 eval,但在我的情况下它不起作用......我需要将字符串转换为对象数组。这是我的字符串(ajax 请求结果):

{'printjob':{'bill_id':7998,'product_ids':[23703,23704,23705]}}

当我尝试时:

x = "{'printjob':{'bill_id':7998,'product_ids':[23703,23704,23705]}}";
eval(x);

我收到“意外令牌:”错误。

我的解决方案是:

x = "{'printjob':{'bill_id':7998,'product_ids':[23703,23704,23705]}}"; 
x = "temp = " + x + "; return temp;"
tempFunction = new Function (x);
finalArray = tempFunction();

现在有了对象 finalArray!

我希望能有所帮助

于 2015-11-20T16:37:23.230 回答