2012-11-29 37 views
4

我有一個字符串字符串轉換爲一個多維數組

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

我需要將其轉換成一個數組,其中:

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

等等

該字符串可改變長度但始終採用上述格式。我嘗試過拆分和拼接以及其他可以想到的「ing」,但我無法得到它。

任何人都可以幫忙嗎?

回答

13

如果字符串肯定是安全的,最簡單的方法是將[]連接到開頭和結尾,然後是eval它。

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

如果你想要更高的安全性,使用雙引號爲您的字符串,並以同樣的方式使用JSON.parse()

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

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

這將限制您支持的JSON數據類型,但給定您的示例字符串,它會正常工作。

+0

則必須更換'''和'「'它不工作 –

+0

@RoyiNamir:。這已經在我的回答指出,但我添加了修改後的字符串是明確 –

+0

didnt看.... :-) –

0

編寫代碼就像

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

,只是

var arr = eval(myString); 
1

試試這個:

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

enter image description here

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!

我希望能幫助