89 votes

Itération sur toutes les propriétés d'un objet en javascript avec Prototype ?

Existe-t-il un moyen d'itérer sur chaque propriété d'un objet à l'aide du framework JavaScript Prototype ?

Voici la situation : Je reçois une réponse AJAX en JSON qui ressemble à quelque chose comme ceci :

{foo: 1, bar: 2, barobj: {75: true, 76: false, 85: true}}

Si j'évalue cette réponse json dans une variable response Je veux être capable d'itérer sur chaque propriété dans la base de données. response.barobj pour voir quels index sont vrais et quels index sont faux.

Le prototype dispose à la fois Object.keys() y Object.values() mais curieusement, il ne semble pas y avoir une simple Object.each() fonction ! Je pourrais prendre les résultats d'Object.keys() et d'Object.values() et faire des références croisées lorsque j'itère sur l'un d'entre eux, mais c'est une telle pirouette que je suis sûr qu'il existe une façon correcte de le faire !

553voto

Christoph Points 64389

Il n'y a pas besoin de Prototype ici : JavaScript a for..in boucles. Si vous n'êtes pas sûr que personne n'a joué avec les Object.prototype , vérifier hasOwnProperty() également, c'est-à-dire

for(var prop in obj) {
    if(obj.hasOwnProperty(prop))
        doSomethingWith(obj[prop]);
}

42voto

Triptych Points 70247

Vous devez d'abord convertir votre objet littéral en un Hash de Prototype :

// Store your object literal
var obj = {foo: 1, bar: 2, barobj: {75: true, 76: false, 85: true}}

// Iterate like so.  The $H() construct creates a prototype-extended Hash.
$H(obj).each(function(pair){
  alert(pair.key);
  alert(pair.value);
});

0voto

Can Berk Güder Points 39887

Vous devez itérer sur les clés et obtenir les valeurs en utilisant des crochets.

Voir : Comment énumérer les propriétés d'un objet javascript ?

EDIT : Évidemment, cela fait de la question un doublon.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X