# Basic Data Structure

Tell us what’s happening:
**Can anyone tell me whats going on here in code **
Please explain what is in the for loop and rhe if sttement

Thank you!!!

``````
freeCodeCamp Challenge Guide: Iterate Through the Keys of an Object with a for…in Statement
Guide

camperbot
1
Oct '19
Iterate Through the Keys of an Object with a for…in Statement 192
Problem Explanation
Note: dot-notation will cause errors in this challenge.
[square-bracket] notation must be used to call a variable property name.
The following code will not work.
Hints
Hint 1:
for (let user in obj) {
if (obj.user.online === true) {
//code
}
}
Hint 2
Example 2 demonstrates how using [square-bracket] notation the code will be executed.
for (let user in obj) {
if (obj[user].online === true) {
//code
}
}
Solutions
Solution 1 (Click to Show/Hide)
let users = {
Alan: {
age: 27,
online: false
},
Jeff: {
age: 32,
online: true
},
Sarah: {
age: 48,
online: false
},
Ryan: {
age: 19,
online: true
}
};
function countOnline(obj) {
// change code below this line
let result = 0;
for (let user in obj) {
if (obj[user].online === true) {
result++;
}
}
return result;
// change code above this line
}
console.log(countOnline(users));

``````

User Agent is: `Mozilla/5.0 (Linux; Android 8.1.0; CPH1909) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Mobile Safari/537.36`.

Challenge: Iterate Through the Keys of an Object with a for…in Statement

First we need to understand how our object is composed.
You have this object called “users” right ? you know that inside “users” we have data
“user” meaning user will be “Alan”, “Jeff”, “Sarah” those will call them
for now user the names.
Each user have a nested object with again a key value pair of “Online”
with a key pair of value either true (1) or false (0).

``````var users = {
Alan: {
online: false
},
Jeff: {
online: true
},
Sarah: {
online: false
}
}
``````

In order to get true or false we need to set our create a flag variable a
true or false. This can be
`var result = 0;` to start our flag.
Now lets loop or iterate the “users object”.
let user be the current property names the names because we want to iterate or loop all of them. so we do for in loop. (all of the properties(user) of the object(users))

`````` for (let user in users) {

}
``````

Once we have this. we can do an if else statement to check its key value pair if either
true (1) or false (0).

` let result = 0;`
we access the “users” object and access all of its current properties[user] and access it’s key values online and set it to true to find out the key value if its true or false.

` users[user].online === true`
and we add 1 to it meaning its true;
`result++;`
else will be 0 as default in the return.
` return result;`

1 Like

Thanks man!!
You actually explain what im looking for, now I can understand what is doing of the if statement
Thank you again!!!