2012-12-06 63 views
-1

我正在嘗試創建一個包含字母:數字對的對象。我計劃創建函數來檢索如果給定一個數字的兩個字母,以及該字母給出的數字。在我能得到那麼遠之前,我在這個對象上失敗了。Javascript - 對象文字 - 迭代

var letterList = { 
    A : 1, 
    B : 2, 
    C : 3, 
    D : 4, 
    E : 5, 
    F : 6, 
    G : 7, 
    H : 8, 
    I : 9, 
    J : 10, 
    K : 11, 
    L : 12, 
    M : 13, 
    N : 14, 
    O : 15, 
    P : 16, 
    Q : 17, 
    R : 18, 
    S : 19, 
    T : 20, 
    U : 21, 
    V : 22, 
    W : 23, 
    X : 24, 
    Y : 25, 
    Z : 26 
}; 

for (x in letterList) { 
    if (letterList.hasOwnProperty(x)) { 
    document.write("letters = " + x + " numbers = " + letterList[x]); 
    } 

輸出什麼也沒有。
我的對象創建不正確嗎?任何建議表示讚賞。

+3

你忘了關閉最後的花括號嗎?否則它應該工作,雖然 –

+2

你錯過了最後一個結束花括號。除此之外,你的代碼似乎很好:http://jsfiddle.net/9cVMN/ – Niko

+0

不需要查找表:'parseInt(「A」,36)-9;' – epascarello

回答

1

該代碼應該可以工作,只需要在它後面再加一個右大括號(})。檢查你的錯誤控制檯。順便說一下,你真的應該可以省略hasOwnProperty檢查,因爲你的普通對象不會繼承Object.prototype的任何枚舉屬性。

除此之外,你可以短得多寫代碼:

for (var charCode = 65; charCode < 91; charCode++) 
    document.write("letters = " + String.fromCharCode(charCode) + 
        " numbers = " + (charCode-64)); 

也注意到了,在枚舉不保證該密鑰的任何命令。

+0

謝謝Bergi。我甚至沒有考慮過使用charCodes! – Justin