我可以訪問像driver.my_friends["793659690"].name
這樣的值,但現在我在一個循環中使用它,其中key
將保存密鑰。使用一個密鑰訪問JS對象
driver.my_friends[key].name
不起作用。說undefined,並且driver.my_friends["key"].name
將查找一個名爲key的鍵。那麼如何使用它,以便變量的變量也被評估。
我可以訪問像driver.my_friends["793659690"].name
這樣的值,但現在我在一個循環中使用它,其中key
將保存密鑰。使用一個密鑰訪問JS對象
driver.my_friends[key].name
不起作用。說undefined,並且driver.my_friends["key"].name
將查找一個名爲key的鍵。那麼如何使用它,以便變量的變量也被評估。
driver.my_friends[key].name
是正確的方法。在driver.my_friends
=)和/或.name
不存在於該對象中可能沒有像key
這樣的密鑰。
您可以調試很容易:
console.log(driver.my_friends[key]);
console.log(driver.my_friends[key].name);
即使IE8有這樣一個控制檯。
)謝謝!關鍵不存在,因爲在這個循環中我的鑰匙是在價值和關鍵是非常小的數字 – Ashfame 2011-05-16 21:55:42
當您迭代對象的屬性時,某些「垃圾」可能會進入「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的價值[關鍵]被設定,關鍵是與用於閱讀它
好點!謝謝:) – Ashfame 2011-05-16 21:55:51
'driver.my_friends的一個[key] .name'應該可以工作,所以最有可能無論你正在迭代哪個'key'都不存在。嘗試自己調試其他數據或提供更多的周圍代碼。 – mVChr 2011-05-16 21:42:11
'driver.my_friends [key] .name'是正確的。我的猜測是'key'被設置爲錯誤的值。 [見jsFiddle](http://jsfiddle.net/N7ys3/)的一個工作示例。 – lonesomeday 2011-05-16 21:42:30
@mVChr @lonesomeday謝謝!你是對的,邏輯錯誤X( – Ashfame 2011-05-16 21:56:29