我有一个请求,它返回一个带有单个属性的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是否为空数组?
谢谢, 马特
答案 0 :(得分:26)
(data.RoleOwners.length === 0)
答案 1 :(得分:23)
您也可以jQuery.isEmptyObject(data.RoleOwners)
答案 2 :(得分:4)
下面的代码完全正常,不需要写你自己的一个。
// anyObjectIncludingJSON i tried for JSON object.
if(jQuery.isEmptyObject(anyObjectIncludingJSON))
{
return;
}
答案 3 :(得分:0)
数组(也是一个对象)可以具有非数字属性,这些属性不会通过测试零长度来获取。您需要遍历属性,就像测试空对象一样。如果没有合适的数据则数组为空。
function isEmptyObject(obj) {
// This works for arrays too.
for(var name in obj) {
return false
}
return true
}
答案 4 :(得分:0)
检查
JSON.parse(data).length > 0