javascript - for...in 循环中未定义属性,但我可以手动访问它
问题描述
我定义了一个这样的对象:
let users = {
Alan: {
age: 27,
online: false
},
Jeff: {
age: 32,
online: true
},
Sarah: {
age: 48,
online: false
},
Ryan: {
age: 19,
online: true
}
};
然后我通过这个,我得到了名字,这是我所期望的:
for (user in users) {
console.log(user);
}
// Alan
// Jeff
// Sarah
// Ryan
然后我这样做,并得到四次未定义
for (user in users) {
console.log(user.age);
}
// undefined
// undefined
// undefined
// undefined
然后我这样做,我可以访问年龄属性
users.Alan.age
这里发生了什么??
解决方案
您需要从对象而不是键中引用值。您可以从用户对象中选择用户,然后选择年龄。
for (user in users) {
console.log(users[user].age);
}