2017-10-11 2 views
1

J'ai trouvé plusieurs discussions sur ce thème, mais je n'ai pas réussi à résoudre mon problème avec elles.Boucler les objets imbriqués

J'ai un objet comme celui-ci:

allItems: { 
      item1: { 
       val1: 4, 
       val2: 'blaharb' 
        }, 
      itemxyz2: { 
       val1: 76, 
       val2: 'blurb' 
        } 
      } 

Maintenant, je veux simplement mettre une liste comme

Item1 a 4 pour val1 et blaharb pour val2
itemxyz2 a 76 pour val1 et texte de présentation pour val2

Mon tente jusqu'à présent:

console.log(allItems.item1.val1); // prints correctly '4' in the console 

$.each(allItems, function(key, value) { 
console.log(key); // gives me correct key (like 'item1') 
console.log(allItems.item1.val1);// error: "undefined is not an object" - but why?! 
console.log(allItems.key.val1); // same error, understandable ... 
}); 

J'apprécierais beaucoup l'aide, merci!

Répondre

3

Vous pouvez accéder à vos propriétés d'un objet avec la syntaxe de tableau:

$.each(allItems, function(key, value) { 
    console.log(allItems[key]["val1"]); 
    console.log(allItems[key]["val2"]); 
}); 

Exemple:

var allItems = { 
 
    item1: { 
 
    val1: 4, 
 
    val2: 'blaharb' 
 
    }, 
 
    itemxyz2: { 
 
    val1: 76, 
 
    val2: 'blurb' 
 
    } 
 
}; 
 

 

 
$.each(allItems, function(key, value) { 
 
    console.log(allItems[key]["val1"]); 
 
    console.log(allItems[key]["val2"]); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

Merci pour la réponse ultra-rapide, @Aknosis - c'est exactement les informations dont je avais besoin. – BNetz

0

Vous devez utiliser l'option "valeur".

comme:

$.each(allItems, function(key, value) { 
      console.log(key, value.val1); 
      console.log(key, value.val2); 
    });