我有一个JavaScript object。我尝试从classid
获取rgInventory.(someid).classid
并始终获得undefined
。
我的代码(项目是我的对象):
for (var i = 0; i < Object.keys(items.rgInventory).length; i++) {
console.log(items.rgInventory[i].classid);
}
答案 0 :(得分:2)
您的i
不是密钥,而是密钥的序列号。
将您的代码更改为:
var keys = Object.keys(items.rgInventory);
for (var i = 0; i < keys.length; i++) {
console.log(items.rgInventory[keys[i]].classid);
}
请注意,使用for...of
语法,可以这样编码:
for (var key of Object.keys(items.rgInventory)) {
console.log(items.rgInventory[key].classid);
}
for...in
语法更适合迭代对象键:
for (var key in items.rgInventory) {
console.log(items.rgInventory[key].classid);
}
你也可以使用forEach
回调,使用漂亮的第二个参数来设置this
:
Object.keys(items.rgInventory).forEach(function (key) {
console.log(this[key].classid);
}, items.rgInventory);
答案 1 :(得分:-1)
问题是您使用i
变量作为查找,而不是Object.keys(items.rgInventory)[i]
试试这个:
for (var i = 0; i < Object.keys(items.rgInventory).length; i++) {
console.log(items.rgInventory[Object.keys(items.rgInventory)[i]].classid);
}
但这可能不是你想要做这个查找的方式......这有点干净:
Object.keys(items.rgInventory).forEach(function(key) {
console.log(items.rgInventory[key].classid)
})