2008-12-02 5 views
22

Tôi có một yêu cầu trả về đối tượng JSON với một thuộc tính đơn lẻ là một mảng. Làm thế nào tôi có thể kiểm tra nếu mảng là trống?Kiểm tra đối tượng mảng trống trong JSON với jQuery

Với jQuery mã như:

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

những gì tôi có thể đặt thay vì if (data.RoleOwners == []) để kiểm tra nếu RoleOwners là một mảng trống rỗng?

Cảm ơn, Matt

Trả lời

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

Tôi không hiểu. Tại sao -1? „! []. Chiều dài“ - sẽ ngắn hơn và chính xác hơn, imho. –

+0

Đồng ý, phải là .length === 0 hoặc! []. Length như đã nói ở trên. Dù bằng cách nào thì câu hỏi này không phải về các đối tượng JSON, mà là các mảng Javascript. – balupton

+0

(data.RoleOwners.length == 0) cũng có tác dụng đối với tôi (trong tình huống tương đương) ... – Jan

23

Bạn cũng có thể làm jQuery.isEmptyObject(data.RoleOwners)

séc ra http://api.jquery.com/jQuery.isEmptyObject/

+1

Đó là cách tôi thường làm. –

+2

Câu trả lời này hoạt động khi một mảng trống hoặc một mảng rỗng được chuyển qua kết quả dữ liệu (Câu trả lời được chấp nhận không) cảm ơn cho điều này – JakeJ

0

Một mảng (là một đối tượng quá) có thể có các thuộc tính không phải là số mà không được nhặt bởi thử nghiệm với độ dài bằng không. Bạn cần phải lặp qua các thuộc tính giống như kiểm tra đối tượng rỗng. Nếu không có sự thích hợp thì mảng đó trống.

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

mã bên dưới hoạt động hoàn toàn tốt đẹp không cần phải viết một mã của riêng bạn.

// anyObjectIncludingJSON i tried for JSON object. 

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

Arun, tôi quan sát thấy rằng bạn có hiểu biết tốt về jQuery apis, bạn luôn đưa ra tham chiếu về Jquery's apis sẵn có hơn là tái phát minh .. bánh xe..good –

+0

cảm ơn Archana. –