2012-08-17 73 views
0

字符串指標二維表我需要分析一個表,JSON,我發現這個解決方案,它的工作原理:動態地創建在JavaScript中

var tab=[{"value":"1.0","label":"Alabama"},{"value":"2.0","label":"Alaska"},  {"value":"3.0","label":"American Samoa"}]; 
    var myJsonString = JSON.stringify(tab); 
    var jsonData = $.parseJSON(myJsonString); 

問題是,當我宣佈動態二維表「選項卡'它不起作用:

var tab_desc1= new Array(3); 
    tab_desc1[0]=new Array(2); 
    tab_desc1[0]["value"]="1.0"; 
    tab_desc1[0]["label"]="Alabama"; 
    tab_desc1[1]=new Array(2); 
    tab_desc1[1]["value"]="2.0"; 
    tab_desc1[1]["label"]="Alaska"; 
    tab_desc1[2]=new Array(2); 
    tab_desc1[2]["value"]="3.0"; 
    tab_desc1[2]["label"]="American Samoa"; 
    var myJsonString = JSON.stringify(tab_desc1);  
    var jsonData = $.parseJSON(myJsonString); 

從邏輯上說,我的聲明包含錯誤,bur我看不到它。 任何幫助!謝謝。

+1

你的內部尺寸不是一個數組,所以不要做'tab_desc1 [0] = new Array()'。它是一個_object_(JS數組沒有字符串鍵),因此將它創建爲一個'tab_desc1 [0] = {}' – 2012-08-17 02:20:54

+1

您正在使用帶有字符串的數組。如果你想使用字符串使用對象。在你的情況下,你應該一起使用數組和對象。 – 2012-08-17 02:21:09

+0

我正在工作的移動應用程序(jQuery的移動和phoneGap),我需要它與複雜的對象自動完成搜索:http://www.andymatthews.net/code/autocomplete/local_complex.html – 2012-08-17 02:22:45

回答

2
tab_desc1[0] = new Array(2); 

應該

tab_desc1[0] = {}; 

,並與他人相同。

但我不知道將字符串變成字符串然後解析回來的目的。

+0

的情況下運行良好,這是答案,恭喜! – 2012-08-17 02:38:51

1

問題是數組和對象不是一回事。

你的第一個代碼創建了一個對象的數組

您的第二個代碼創建了一個數組的數組,但隨後在這些數組上設置了非數字屬性。 JS數組是一種對象,因此設置非數字屬性並不是錯誤,但stringify()將只包含數字屬性。你需要這樣做:

var tab_desc1 = []; // Note that [] is "nicer" than new Array(3) 
tab_desc1[0] = {}; // NOTE the curly brackets to create an object not an array 
tab_desc1[0]["value"] = "1.0"; 
tab_desc1[0]["label"] = "Alabama"; 
tab_desc1[1] = {}; // curly brackets 
tab_desc1[1]["value"] = "2.0"; 
tab_desc1[1]["label"] = "Alaska"; 
tab_desc1[2] = {}; // curly brackets 
tab_desc1[2]["value"] = "3.0"; 
tab_desc1[2]["label"] = "American Samoa"; 

var myJsonString = JSON.stringify(tab_desc1);  
var jsonData = $.parseJSON(myJsonString); 

你也可以這樣做:

var tab_desc1 = []; 
tab_desc1[0] = {"value":"1.0","label":"Alabama"}; 
tab_desc1[1] = {"value":"2.0","label":"Alaska"}; 
tab_desc1[2] = {"value":"3.0","label":"American Samoa"}; 

(另外,爲什麼字符串化,然後立即解析找回相同的對象?)

+0

因爲我從文件中讀取數據,我應該瀏覽它以在數組中插入數據,然後將其解析爲JSON(導致腳本需要json格式) – 2012-08-17 02:44:17

+0

感謝您的澄清,您的回覆是完美的! – 2012-08-17 02:48:42