La façon la plus simple de le faire, avec d'excellentes performances et une compatibilité avec les anciens et les nouveaux navigateurs, est d'inclure l'un ou l'autre des éléments suivants Lo-Dash o Underscore dans votre page.
Ensuite, vous pouvez utiliser soit _.size(object)
o _.keys(object).length
Pour votre obj.Data
vous pouvez le tester avec :
console.log( _.size(obj.Data) );
ou :
console.log( _.keys(obj.Data).length );
Lo-Dash et Underscore sont deux excellentes bibliothèques ; vous trouverez l'une ou l'autre très utile dans votre code. (Elles sont assez similaires l'une à l'autre ; Lo-Dash est une version plus récente avec quelques avantages).
Alternativement, vous pouvez inclure cette fonction dans votre code, qui boucle simplement sur les propriétés de l'objet et les compte :
function ObjectLength( object ) {
var length = 0;
for( var key in object ) {
if( object.hasOwnProperty(key) ) {
++length;
}
}
return length;
};
Vous pouvez le tester avec :
console.log( ObjectLength(obj.Data) );
Ce code n'est cependant pas aussi rapide qu'il pourrait l'être dans les navigateurs modernes. Pour une version qui est beaucoup plus rapide dans les navigateurs modernes et qui fonctionne toujours dans les anciens, vous pouvez utiliser :
function ObjectLength_Modern( object ) {
return Object.keys(object).length;
}
function ObjectLength_Legacy( object ) {
var length = 0;
for( var key in object ) {
if( object.hasOwnProperty(key) ) {
++length;
}
}
return length;
}
var ObjectLength =
Object.keys ? ObjectLength_Modern : ObjectLength_Legacy;
et comme précédemment, testez-le avec :
console.log( ObjectLength(obj.Data) );
Ce code utilise Object.keys(object).length
dans les navigateurs modernes et revient à compter en boucle pour les anciens navigateurs.
Mais si vous vous lancez dans tout ce travail, je vous recommande d'utiliser plutôt Lo-Dash ou Underscore et de bénéficier de tous les avantages offerts par ces bibliothèques.
J'ai mis en place un jsPerf qui compare la vitesse de ces différentes approches . Veuillez l'exécuter dans tous les navigateurs que vous avez à portée de main pour ajouter aux tests.
Merci à Barmar para suggérant Object.keys
pour les navigateurs plus récents dans sa réponse.