Тестирование на пустой объект массива в JSON с помощью jQuery - PullRequest
22 голосов
/ 02 декабря 2008

У меня есть запрос, который возвращает объект 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 пустым массивом?

Спасибо, Matt

Ответы [ 5 ]

26 голосов
/ 02 декабря 2008
(data.RoleOwners.length === 0)
23 голосов
/ 02 августа 2011

Вы также можете сделать jQuery.isEmptyObject(data.RoleOwners)

проверить http://api.jquery.com/jQuery.isEmptyObject/

4 голосов
/ 18 сентября 2013

код ниже работает отлично, нет необходимости писать свой собственный.

   // anyObjectIncludingJSON i tried for JSON object.

         if(jQuery.isEmptyObject(anyObjectIncludingJSON))
            {
                return;
            }
0 голосов
/ 23 марта 2018

Проверьте это

JSON.parse(data).length > 0
0 голосов
/ 15 мая 2012

Массив (являющийся также объектом) может иметь нечисловые свойства, которые не обнаруживаются при тестировании на нулевую длину. Вам нужно перебирать свойства, как при тестировании пустого объекта. Если свойств нет, то массив пуст.

function isEmptyObject(obj) {
   // This works for arrays too.
   for(var name in obj) {
       return false
   }
   return true
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...