我有一个JavaScript object。我尝试从classid获取rgInventory.(someid).classid,并且总是获取undefined

我的代码(项目是我的对象):

for (var i = 0; i < Object.keys(items.rgInventory).length; i++) {
    console.log(items.rgInventory[i].classid);
}

最佳答案

您的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);

09-27 21:24