Свойство не определено в for...in loop, но я могу получить к нему доступ вручную
Я определяю объект следующим образом:
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
Что здесь происходит??
2 ответа
Вам нужно ссылаться на значение из объекта, а не ключа. Вы можете выбрать пользователя из объекта users, а затем указать возраст.
for (user in users) {
console.log(users[user].age);
}
Было бы более стандартным сделать пользователей таким массивом:
let users = [
{
name: 'Alan',
age: 27,
online: false
},
{
name: 'Jeff',
age: 32,
online: true
},
{
name: 'Sarah',
age: 48,
online: false
},
{
name: 'Ryan',
age: 19,
online: true
}
];
Я думаю, что это, вероятно, "действовать" так, как вы ожидаете. (Где каждый элемент объекта users является объектом.)