160 votes

Comment puis-je compter les attributs d'un objet JavaScript?

Supposons que l'objet suivant soit en JavaScript:

 var object = {
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
}; 
 

Comment savoir combien de valeurs existent dans l'objet?

498voto

deadrunk Points 3902

Vous pouvez le faire en utilisant ce code simple:

 Object.keys(myObject).length
 

104voto

Warren Young Points 16324

Il n'y a pas de réponse simple, car Object — dont chaque objet en JavaScript provient — comprend de nombreux attributs automatiquement, et l'ensemble exact des attributs que vous obtenez dépend de l'interprète et ce code est exécuté avant le vôtre. Donc, vous avez en quelque sorte à séparer celles que vous avez défini de ceux que vous avez eu "gratuitement".

Voici un moyen:

var foo = {"key1": "value1", "key2": "value2", "key3": "value3"};
Object.prototype.foobie = 'bletch'; // add property to foo that won't be counted

var count = 0;
for (var k in foo) {
    if (foo.hasOwnProperty(k)) {
       ++count;
    }
}
alert("Found " + count + " properties specific to foo");

La deuxième ligne indique la façon dont les autres code pouvez ajouter des propriétés à tous Object de produits dérivés. Si vous supprimez l' hasOwnProperty() vérifiez à l'intérieur de la boucle, la propriété compter jusqu'à au moins 4. Sur une page avec du JavaScript en plus de ce code, il pourrait être supérieur à 4, si ce code modifie également l' Object prototype.

49voto

Utilisez la bibliothèque de soulignement , très utile: _.keys(obj).length .

12voto

pimus Points 99
  var miobj = [
  {"padreid":"0", "sw":"0", "dtip":"UNO", "datos":[]},
  {"padreid":"1", "sw":"0", "dtip":"DOS", "datos":[]}
 ];
 alert(miobj.length) //=== 2
 

mais

  alert(miobj[0].length) //=== undefined
 

cette fonction est très bonne

 Object.prototype.count = function () {
    var count = 0;
    for(var prop in this) {
        if(this.hasOwnProperty(prop))
            count = count + 1;
    }
    return count;
}

alert(miobj.count()) // === 2
alert(miobj[0].count()) // === 4
 

12voto

nexus Points 312

Vous pouvez parcourir l'objet pour obtenir les clés ou les valeurs:

 function numKeys(obj)
{
    var count = 0;
    for(var prop in obj)
    {
        count++;
    }
    return count;
} 

Cela ressemble à une "faute d'orthographe", mais je veux juste souligner que votre exemple est la syntaxe non valide, devrait être

 var object = {"key1":"value1","key2":"value2","key3":"value3"};
 

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