2015-05-06 67 views
0

這是我正在嘗試完成的一個示例,並且如預期的那樣它不起作用。使用字符串作爲對象字段來引用

是否有類似的工作?

var fieldsToCheck = ["a", "b", "c", "d", "e", "f"]; 

for (var i = 0; i < fieldsToCheck.length; i++){ 
    var field = fieldsToCheck[counter]; 
    if (!obj.field) { 
     console.log('There is no field of: ' + field); 
    } 
} 

本來我這個僅當使用每個字段的語句,我想知道是否有做這一個更快的方法。

+1

你試圖實現什麼? – amahfouz

+0

'obj.a'等於'obj [「a」]'等同於'prop =「a」; obj [道具]' – Tomalak

回答

2

您不能以這種方式訪問​​屬性。由於它是一個變量,因此您必須使用括號而不是點符號:

var fieldsToCheck = ["a", "b", "c", "d", "e", "f"]; 

for (var i = 0; i < fieldsToCheck.length; i++){ 
    var field = fieldsToCheck[counter]; 
    if (!obj[field]) { 
     console.log('There is no field of: ' + field); 
    } 
} 

當您使用圓點標記例如obj.field,你基本上是問obj是否有密鑰field,而不是如果obj有一個密鑰是變量field的值。對於任何要訪問包含非變量有效字符(如-)的未知字符串鍵或字符串鍵的情況,都必須使用括號表示法,如obj[field]obj["a"]

+0

完美,謝謝! –

+0

確保在您能夠接受答案時:-) – josh

相關問題