首页 > 解决方案 > 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

这里发生了什么??

标签: javascriptobjectfor-in-loop

解决方案


您需要从对象而不是键中引用值。您可以从用户对象中选择用户,然后选择年龄。

for (user in users) {
  console.log(users[user].age);
}

推荐阅读