web-dev-qa-db-ja.com

jQueryを使用したJSONの空の配列オブジェクトのテスト

配列である単一のプロパティを持つ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");
                });

if(data.RoleOwners == [])の代わりに何を配置して、RoleOwnersが空の配列かどうかをテストできますか?

ありがとう、マット

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

jQuery.isEmptyObject(data.RoleOwners)も実行できます

チェックアウト http://api.jquery.com/jQuery.isEmptyObject/

23
Sadiksha Gautam

以下のコードは完全に機能し、独自のコードを記述する必要はありません。

   // anyObjectIncludingJSON i tried for JSON object.

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

これをチェックして

JSON.parse(data).length > 0

配列(オブジェクトでもある)には、長さゼロのテストでは取得されない非数値のプロパティを含めることができます。空のオブジェクトのテストと同じように、プロパティを反復処理する必要があります。プロパティがない場合、配列は空です。

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