JavaScript从对象获取信息

时间:2016-09-04 15:54:49

标签: javascript

我有一个JavaScript object。我尝试从classid获取rgInventory.(someid).classid并始终获得undefined

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

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

2 个答案:

答案 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)
})