Comment tester la présence d'un objet JavaScript vide ?

Après une requête AJAX, il arrive que mon application renvoie un objet vide, par exemple :

var a = {};

Comment puis-je vérifier si c&#8217est le cas ?

Il n'y a pas de moyen simple de le faire. Vous devrez boucler sur les propriétés de manière explicite :

function isEmpty(obj) {
    for(var prop in obj) {
        if(obj.hasOwnProperty(prop))
            return false;
    }

    return true;
}

Si le support ECMAScript 5 est disponible, vous pouvez utiliser Object.keys() à la place :

function isEmpty(obj) {
    return Object.keys(obj).length === 0;
}
Commentaires (16)
  1. Juste une solution de contournement. Votre serveur peut-il générer une propriété spéciale en cas d'absence de données ?

Par exemple :

    var a = {empty:true} ;

Vous pouvez alors facilement le vérifier dans votre code de rappel AJAX.

  1. Une autre façon de le vérifier :

     si (a.toSource() === "({})")  // alors 'a' est vide

EDIT : Si vous utilisez une bibliothèque JSON (par exemple JSON.js), vous pouvez essayer la fonction JSON.encode() et tester le résultat par rapport à une chaîne de valeur vide.

Commentaires (11)
function isEmpty(obj) {
  for(var i in obj) { return false; }
  return true;
}
Commentaires (1)