4

I am trying to access a property (name) on an object that is in fact located inside another object. I initialized the object in a file:

var icons = {

    "facebook": {name: 'facebook', icon_url: 'img/logos/facebook.png'}

};

And then tried to check the object with this code:

   var icon_current_class;

  for(var icon in icons){

    console.dir(icon);
    //outputs an object named facebook but says it has no properties

    if( $(this).hasClass( icon.name ) ){
      icon_current_class = icon.name;
    }else{
      alert("Something went wrong. Please contact the mods.");
    }
  }

And of course, the alert("Something went wrong") goes off everytime I run this. I have tried for a long time to find a solution, but to no avail. Can anyone please help?

2

2 Answers 2

6

for(var x in y) x is the key of the object, you need to use y[x] to return the value:

for(var icon_name in icons){
    var icon = icons[icon_name];
    .....code....
}
Sign up to request clarification or add additional context in comments.

3 Comments

Is there an echo in here?
ahaha thank you too! You actually explained the code you wrote, so thank you so much!
@popnoodles i actually started typing my answer before yours, but my wifi dropped, you should get the answer tho.
6
for(var icon in icons)

In the for loop, icon you're assigned there isn't an object, it's the index/key of each item.

for (var i in icons){
    console.dir(icons[i]);
...

1 Comment

Hmm, it didn't set in my mind why this worked yet, but thank you so much for the fast answer! :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.