Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript: can't access object property through for..in loop

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?

like image 842
Marcos Pereira Avatar asked Sep 21 '25 12:09

Marcos Pereira


2 Answers

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....
}
like image 193
OneOfOne Avatar answered Sep 23 '25 02:09

OneOfOne


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]);
...
like image 40
Popnoodles Avatar answered Sep 23 '25 02:09

Popnoodles