2008-12-02 13 views
22

Tengo una solicitud que devuelve un objeto JSON con una única propiedad que es una matriz. ¿Cómo puedo probar si la matriz está vacía?Prueba de un objeto de matriz vacío en JSON con jQuery

Con el código jQuery como:

$.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"); 
       }); 

lo que puede poner en lugar de if (data.RoleOwners == []) para probar si el RoleOwners es una matriz vacía?

Gracias, Matt

Respuesta

24
(data.RoleOwners.length === 0) 
+1

No entiendo. ¿Por qué -1? "! []. Length" - sería más corto y correcto, imho. –

+0

De acuerdo, debe ser .length === 0 o! []. Length como se indicó anteriormente. De cualquier forma, esta pregunta no se trata en absoluto de objetos JSON, sino de matrices de Javascript. – balupton

+0

(data.RoleOwners.length == 0) funciona para mí también (en una situación similar) ... – Jan

23

También puede hacer jQuery.isEmptyObject(data.RoleOwners)

el registro de salida http://api.jquery.com/jQuery.isEmptyObject/

+1

Esa es la forma en que suelo hacerlo. –

+2

Esta respuesta funcionó cuando se pasa una matriz vacía o una matriz nula a través del resultado de los datos (la respuesta aceptada no) gracias por este – JakeJ

0

Una matriz (siendo un objeto también) puede tener propiedades no numéricos que no son recogidos por prueba de longitud cero. Necesita iterar a través de las propiedades al igual que probar un objeto vacío. Si no hay propiedades, entonces la matriz está vacía.

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

código siguiente funciona perfectamente bien sin necesidad de escribir uno propio.

// anyObjectIncludingJSON i tried for JSON object. 

     if(jQuery.isEmptyObject(anyObjectIncludingJSON)) 
      { 
       return; 
      } 
+0

Arun, observé que tiene una buena comprensión de las API jQuery, siempre ha proporcionado referencias de Jquery apis incorporados en lugar de reinventar ... ruedas ... bueno –

+0

gracias Archana. –

Cuestiones relacionadas