2015-05-23 39 views
0

我試圖創建一個由兩個屬性的字母表中的每個字母對象組成的數組。信和dd_array。現在我正在設置dd_array = [],但我希望它是相應的morseDic屬性。與對象屬性混淆。我怎麼不'未定義'?

因此,例如_charObjArray[0] = {letter: 'a', dd_array: [0,1]}

我可以知道如何此最佳可能的代碼的一些技巧?

alpha_array = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]; 

morseDic = { 
    a: [0,1], 
    b: [1,0,0,0], 
    c: [1,0,1,0], 
    d: [1,0,0], 
    e: [0], 
    f: [0,0,1,0], 
    g: [1,1,0], 
    h: [0,0,0,0], 
    i: [0,0], 
    j: [0,1,1,1], 
    k: [1,0,1], 
    l: [0,1,0,0], 
    m: [1,1], 
    n: [1,0], 
    o: [1,1,1], 
    p: [0,1,1,0], 
    q: [1,1,0,1], 
    r: [0,1,0], 
    s: [0,0,0], 
    t: [1], 
    u: [0,0,1], 
    v: [0,0,0,1], 
    w: [0,1,1], 
    x: [1,0,0,1], 
    y: [1,0,1,1], 
    z: [1,1,0,0] 
} 

function _alpha(_char, dd_array) { 
    this.letter = _char; 
    this.dd_array = dd_array; 
} 


var _charObjArray = [] 
for (i = 0; i < alpha_array.length; i++) { 
    var _charNow = alpha_array[i]; 
    var __charNow = _charNow; 
    var __charNow = new _alpha(_charNow, "[]") // "[]" should be replaced with the _charNow corresponding property from morseDic 
    _charObjArray.push(__charNow) 
} 

console.log(_charObjArray); 
+0

'new _alpha(_charNow,morseDic [_charNow])'? – dandavis

+0

爲什麼「[]」它是一個字符串而不是數組?我不明白爲什麼你需要使事情複雜化。您已經有一組鍵和相應的對象字面值。你已經擁有了你所需要的一切。 – webduvet

回答

0

,而不是在_alpha,:

this.dd_array = dd_array; 

...您使用_char索引到morseDic對象:

this.dd_array = morseDic[_char]; 

...然後沒有傳遞第二個參數_alpha

但是,如果你將它傳遞給_alpha作爲參數:

var __charNow = new _alpha(_charNow, morseDic[_charNow]); 

在JavaScript中,你可以訪問對象的屬性或者與點符號和屬性名稱,文字(obj.foo,或morseDic.a),或使用括號符號和屬性名稱字符串 *(obj["foo"]morseDic["a"])。在後一種情況下,字符串可以是任何表達式的結果,包括變量查找。


*在ES6中,它將是字符串或Symbol s。