web-dev-qa-db-fra.com

Test d'un objet de tableau vide dans JSON avec jQuery

J'ai une demande qui retourne un objet JSON avec une propriété unique qui est un tableau. Comment puis-je tester si le tableau est vide?

Avec un code jQuery comme:

 $.getJSON(
            jsonUrl,
            function(data) {
                if (data.RoleOwners == [ ]) {
                    $('<tr><td>' + noRoleOwnersText + '</td></tr>').appendTo("#roleOwnersTable tbody");
                    return;
                }
                $.each(data.RoleOwners, function(i, roleOwner) {
                    var tblRow =
                    "<tr>"
                    + "<td>" + roleOwner.FirstName + "</td>"
                    + "<td>" + roleOwner.LastName + "</td>"
                    + "</tr>"
                    $(tblRow).appendTo("#roleOwnersTable tbody");
                });

que puis-je mettre à la place de if (data.RoleOwners == []) pour tester si le RoleOwners est un tableau vide?

Merci, Matt

22
mattcole
(data.RoleOwners.length === 0)
26
svinto

Vous pouvez aussi faire jQuery.isEmptyObject(data.RoleOwners)

découvrez http://api.jquery.com/jQuery.isEmptyObject/

23
Sadiksha Gautam

le code ci-dessous fonctionne parfaitement sans avoir besoin d'écrire l'un des vôtres.

   // anyObjectIncludingJSON i tried for JSON object.

         if(jQuery.isEmptyObject(anyObjectIncludingJSON))
            {
                return;
            }
4
Arun Pratap Singh

Vérifie ça

JSON.parse(data).length > 0

Un tableau (étant également un objet) peut avoir des propriétés non numériques qui ne sont pas détectées par le test de longueur nulle. Vous devez parcourir les propriétés comme si vous recherchiez un objet vide. S'il n'y a pas de propriété, le tableau est vide.

function isEmptyObject(obj) {
   // This works for arrays too.
   for(var name in obj) {
       return false
   }
   return true
}
0
John Middlemas