Il n'y a pas d'appel direct de "longueur" ou de "taille", vous devez tester les touches disponibles dans l'objet.
Notez que tous, de sorte que votre code serait probablement préférable d'utiliser un objet générique plutôt qu'un tableau sont des tableaux associatifs (cartes) objets JavaScript:
var testarray = {}; // <= only change is here
testarray['one'] = '1';
testarray['two'] = '2';
testarray['three'] = '3';
Vous pouvez découvrir ce que les clés sont dans un objet en utilisant for..in
:
var name;
for (name in testarray) {
// name will be 'one', then 'two', then 'three' (in no guaranteed order)
}
... avec lequel vous pouvez construire une fonction pour tester si l'objet est vide.
function isEmpty(obj) {
var name;
for (name in obj) {
return false;
}
return true;
}
Comme CMS signalé dans sa réponse, qui guidera à travers toutes les clés, y compris les clés sur le prototype de l'objet. Si vous ne souhaitez que des clés sur l'objet et non son prototype, utilisez le haut-hasOwnProperty
fonction:
function isEmpty(obj) {
var name;
for (name in obj) {
if (obj.hasOwnProperty(name)) {
return false;
}
}
return true;
}
dupe; bonne réponse @ http://stackoverflow.com/questions/5223/length-of-javascript-associative-array –
JavaScript n'a pas de "tableaux associatifs", il a "tableaux" et "objets". Si vous souhaitez utiliser des propriétés nommées, utilisez un objet brut ('{}') et non un tableau. – Quentin
@David: Point sémantique, mais je dirais dans l'autre sens: ** Tous ** Les objets JavaScript sont des tableaux associatifs (pas seulement le type 'Array', bien que ce soit aussi le cas). Ils ont des clés de chaîne qui peuvent être énumérées, des entrées qui peuvent être ajoutées et supprimées ('delete') ad hoc, etc .. (Convenu que si vous n'utilisez pas d'index numériques, vous ne voulez pas utiliser un' Array' –