2008-12-02 21 views
22

我有一個請求返回一個帶有單個屬性的JSON對象,該屬性是一個數組。我如何測試數組是否爲空?使用jQuery測試JSON中的空數組對象

隨着jQuery代碼等:

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

我可以把如果(data.RoleOwners == [])以測試是否RoleOwners是一個空數組代替?

謝謝, 馬特

回答

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

我不明白。爲什麼是-1? 「![]。length」 - 會更短且正確,恕我直言。 – 2009-09-02 11:43:23

+0

同意,應該是.length === 0或![]。長度如上所述。無論哪種方式,這個問題根本不是關於JSON對象,而是Javascript數組。 – balupton 2010-07-11 13:37:42

+0

(data.RoleOwners.length == 0)也適用於我(在可比較的情況下)... – Jan 2010-09-14 11:10:08

0

數組(作爲一個對象太)可具有不被拾起非數字屬性測試零長度。您需要遍歷屬性,就像測試一個空對象一樣。如果沒有合適的話,那麼這個數組是空的。

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

下面的代碼工作完好,沒有必要寫你自己的一個。

// anyObjectIncludingJSON i tried for JSON object. 

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