Bien que les implémentations JS puissent garder la trace d'une telle valeur en interne, il n'y a pas de moyen standard de l'obtenir.
Dans le passé, la variante Javascript de Mozilla exposait le fichier hors normes __count__
mais il a été supprimé avec la version 1.8.5.
Pour les scripts multi-navigateurs, vous êtes obligé d'itérer explicitement sur les propriétés et de vérifier hasOwnProperty()
:
function countProperties(obj) {
var count = 0;
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
++count;
}
return count;
}
Dans le cas des implémentations compatibles avec ECMAScript 5, cela peut également être écrit comme suit (Kudos to Avi Flax )
function countProperties(obj) {
return Object.keys(obj).length;
}
Gardez à l'esprit que les propriétés qui ne sont pas énumérables (par exemple, les propriétés d'un tableau) vous échapperont également. length
).
Si vous utilisez un framework comme jQuery, Prototype, Mootools, $quelque soit le dernier cri, vérifiez s'il est fourni avec sa propre API de collections, qui pourrait être une meilleure solution à votre problème que l'utilisation d'objets JS natifs.