Basic Data Structures - Iterate Through the Keys of an Object with a for...in Statement

Tell us what’s happening:
Describe your issue in detail here.
when I use dot ( . ) to access online property of users it does not work.
However it works fine when using usersObj[names].online.
Can someone tell me why this is happening?

  **Your code so far**
const users = {
Alan: {
  online: false
},
Jeff: {
  online: true
},
Sarah: {
  online: false
}
}

function countOnline(usersObj) {
// Only change code below this line
let count = 0;
for (let names in usersObj)
{
  console.log(names);
  if( usersObj.names.online == true)
  {
    count++;
  }
}
return count;
// Only change code above this line
}

console.log(countOnline(users));
  **Your browser information:**

User Agent is: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36

Challenge: Basic Data Structures - Iterate Through the Keys of an Object with a for…in Statement

Link to the challenge:

You cannot use dot notation when the property name is stored in a variable. Dot notation us only for the exact, literal property name.

usersObj[names][online] this also does not work is there a specific order to use dots and brackets

Because there doesn’t exist a online variable. To use bracket notation with a string, you must use quotes.

1 Like

it works when using [‘online’]
I think I understood how it works thanks.
for variables I have to use bracket

1 Like