2011-05-16 59 views
0

我可以訪問像driver.my_friends["793659690"].name這樣的值,但現在我在一個循環中使用它,其中key將保存密鑰。使用一個密鑰訪問JS對象

driver.my_friends[key].name不起作用。說undefined,並且driver.my_friends["key"].name將查找一個名爲key的鍵。那麼如何使用它,以便變量的變量也被評估。

+2

'driver.my_friends的一個[key] .name'應該可以工作,所以最有可能無論你正在迭代哪個'key'都不存在。嘗試自己調試其他數據或提供更多的周圍代碼。 – mVChr 2011-05-16 21:42:11

+0

'driver.my_friends [key] .name'是正確的。我的猜測是'key'被設置爲錯誤的值。 [見jsFiddle](http://jsfiddle.net/N7ys3/)的一個工作示例。 – lonesomeday 2011-05-16 21:42:30

+0

@mVChr @lonesomeday謝謝!你是對的,邏輯錯誤X( – Ashfame 2011-05-16 21:56:29

回答

0

driver.my_friends[key].name是正確的方法。在driver.my_friends =)和/或.name不存在於該對象中可能沒有像key這樣的密鑰。

您可以調試很容易:

console.log(driver.my_friends[key]); 
console.log(driver.my_friends[key].name); 

即使IE8有這樣一個控制檯。

+0

)謝謝!關鍵不存在,因爲在這個循環中我的鑰匙是在價值和關鍵是非常小的數字 – Ashfame 2011-05-16 21:55:42

1

當您迭代對象的屬性時,某些「垃圾」可能會進入「key」變量。我建議如下:

for (var key in driver.my_friends) { 
    if (key && driver.my_friends[key] && driver.my_friends[key].name) { 
    // Do what you need here 
    } 
} 

同時,確保當driver.my_friends的價值[關鍵]被設定,關鍵是與用於閱讀它

+0

好點!謝謝:) – Ashfame 2011-05-16 21:55:51