我有一个字符串
var myString = "['Item', 'Count'],['iPad',2],['Android',1]";
我需要将其转换为数组,其中:
myArray[0][0] = 'Item';
myArray[0][1] = 'Count';
myArray[1][0] = 'iPad';
myArray[1][1] = 2;
等...
字符串的长度可能不同,但始终采用上述格式。我尝试过分裂和拼接以及任何其他“我能想到的”,但我无法理解。
有人可以帮忙吗?
答案 0 :(得分:14)
如果字符串肯定是安全的,最简单的方法是将[
和]
连接到开头和结尾,然后eval
。
var arr = eval("[" + myString + "]");
如果您想要更高的安全性,请为字符串使用双引号,并以相同的方式使用JSON.parse()
。
var myString = '["Item", "Count"],["iPad",2],["Android",1]';
var arr = JSON.parse("[" + myString + "]");
这将限制您支持的JSON数据类型,但是根据您的示例字符串,它将正常工作。
答案 1 :(得分:1)
试试这个:
JSON.parse("[['Item', 'Count'],['iPad',2],['Android',1]]".replace(/\'/g,"\""))
答案 2 :(得分:0)
编写代码,如
var myString = "[['Item', 'Count'],['iPad',2],['Android',1]]";
只是
var arr = eval(myString);
答案 3 :(得分: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!
我希望能帮助