2012-08-09 57 views
0

當我在javascript中創建關聯數組時,我遇到了這樣的問題。 我想通過使用字段名稱作爲鍵來獲取值,但我只是沒有定義。 我該怎麼做才能通過關鍵獲得價值,或者哪種方式是最好的方法。不要在javascript中返回關聯數組

這裏是我的代碼

function getFields(pVal){ 
    var tmpObj = {}; 
    str = pVal.split(","); 
    for(i=0;i<str.length;i++){ 
     tmpVal = str[i].split(":"); 
     tmpObj[tmpVal[0]] = tmpVal[1]; 
    } 
    return tmpObj; 
} 

function JustTest(){ 
    var fields = {}; 
    fields = getFields("'Code':'PRJ001','Name':'Project 01'"); 
    alert(fields['Code']); 
} 
+0

,其中從這個字符串?它看起來像它應該是JSON。 – Aesthete 2012-08-09 11:23:45

回答

4

因爲關鍵是'Code',不Code,注意單引號',你需要做的alert(fields["'Code'"]);

PS:請在末尾添加;的聲明,這是不好的做法,省略它們。

+2

[分號是可選的](http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leaders-regarding) – 2012-08-09 11:11:25

+2

前綴分號是分號,因此它們不是可選的。 – Esailija 2012-08-09 11:17:30

+0

當我通過使用單個代碼創建靜態對象。我可以檢索價值。動態地,我無法獲得價值。我可否瞭解其中的差異? – cnk 2012-08-09 11:26:53

0

我重因子的代碼,就試試這個:

function getFields(pVal) { 
    var tmpObj = {}; 
    var str = pVal.split(","); 
    for (var i = 0; i < str.length; i++) { 
     var tmpVal = str[i].split(":"); 
     tmpObj[tmpVal[0]] = tmpVal[1]; 
    } 
    return tmpObj; 
} 

function JustTest() { 
    var fields = { }; 
    fields = getFields("'Code':'PRJ001','Name':'Project 01'"); 
    alert(fields["'Code'"]); 
} 

,如果您有疑問請在下方評論代碼,由於

+0

我從參數中刪除單引號。因爲我可以使用2種方式[字段['Code']和fields.Code] – cnk 2012-08-09 11:53:36

+0

ohh,yah ofcouse謝謝 – 2012-08-09 11:55:54