--- id: 587d7b7d367417b2b2512b1d title: Iterate Through the Keys of an Object with a for...in Statement challengeType: 1 forumTopicId: 301162 localeTitle: Итерация через ключи объекта с помощью for for ... in Statement --- ## Description
Иногда вам может потребоваться повторить все ключи внутри объекта. Для этого требуется конкретный синтаксис в JavaScript, называемый выражением for for ... in . Для объекта наших users это может выглядеть так:
для (разрешить пользователям пользователей) {
console.log (пользователь);
};

// logs:
Алан
Джефф
Сара
Райан
В этом заявлении мы определили user переменной, и, как вы можете видеть, эта переменная была сброшена во время каждой итерации каждому из ключей объекта, когда оператор зациклился на объекте, в результате чего каждое имя пользователя печаталось на консоль. ЗАМЕТКА:
Объекты не поддерживают упорядочение хранимых ключей, например массивов; таким образом, позиция клавиш на объекте или относительный порядок, в котором он появляется, не имеет значения при ссылке или доступе к этому ключу.
## Instructions
Мы определили функцию countOnline ; используйте оператор for for ... внутри этой функции, чтобы прокручивать пользователей в объекте users и возвращать число пользователей, у которых свойство online установлено true .
## Tests
```yml tests: - text: The function countOnline should use a `for in` statement to iterate through the object keys of the object passed to it. testString: assert(code.match(/for\s*\(\s*(var|let)\s+[a-zA-Z_$]\w*\s+in\s+[a-zA-Z_$]\w*\s*\)\s*{/)); - text: 'The function countOnline should return 1 when the object { Alan: { online: false }, Jeff: { online: true }, Sarah: { online: false } } is passed to it' testString: assert(countOnline(usersObj1) === 1); - text: 'The function countOnline should return 2 when the object { Alan: { online: true }, Jeff: { online: false }, Sarah: { online: true } } is passed to it' testString: assert(countOnline(usersObj2) === 2); - text: 'The function countOnline should return 0 when the object { Alan: { online: false }, Jeff: { online: false }, Sarah: { online: false } } is passed to it' testString: assert(countOnline(usersObj3) === 0); ```
## Challenge Seed
```js function countOnline(usersObj) { // change code below this line // change code above this line } ```
### After Tests
```js const usersObj1 = { Alan: { online: false }, Jeff: { online: true }, Sarah: { online: false } } const usersObj2 = { Alan: { online: true }, Jeff: { online: false }, Sarah: { online: true } } const usersObj3 = { Alan: { online: false }, Jeff: { online: false }, Sarah: { online: false } } ```
## Solution
```js function countOnline(usersObj) { let online = 0; for(let user in usersObj){ if(usersObj[user].online) { online++; } } return online; } ```