Свойство не определено в for ... in loop, но я могу получить к нему доступ вручную - PullRequest
0 голосов
/ 03 декабря 2018

Я определяю объект следующим образом:

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

Затем я делаю ЭТО и могу получить доступ к свойству age

users.Alan.age

Что здесь происходит ??

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Было бы более стандартным сделать пользователей массивом, подобным этому:

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 является объектом.)

0 голосов
/ 03 декабря 2018

Вам нужно ссылаться на значение из объекта, а не ключа.Вы можете выбрать пользователя из объекта users, а затем указать возраст.

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