JavaScript:如何测试响应的JSON数组是否为空

15

我得到了以下的 JSON:

{"array":[],"object":null,"bool":false}

而我正在使用以下看似详尽的 if 语句进行测试:

$.ajax({
        type: "GET",
        url: "/ajax/rest/siteService/list",
        dataType: "json",
        success: function (response) {
            var siteArray = response.array;

            // Handle the case where the user may not belong to any groups
            if (siteArray === null || siteArray=== undefined || siteArray=== '' || siteArray.length === 0) {
                            window.alert('hi');
            }
       }
});

但是警报没有触发。 :[


3
console.log(siteArray)会显示什么? - Dennis
[]. 我试过如果 siteArray === "[]",但那也没用。 - Lurk21
一个空数组与 nullundefined 等不同。 - Phrogz
.length === 0 也无法捕获它 - Lurk21
console.log(siteArray.length) 会显示什么? - Phrogz
2个回答

28

使用$.isArray()函数检查一个对象是否为数组,然后你可以检查length属性的真实性来判断它是否为空。

if( !$.isArray(siteArray) ||  !siteArray.length ) {
    //handler either not an array or empty array
}

1
搞定了,而且更加优雅。 - Lurk21
2
这是一个不幸的答案。为什么这个代码可以工作,但 OP 的代码却不能? - Dennis

7

两个空数组并不相同,因为它们不是同一个对象。

var a = [];
if (a === []){
  // This will never execute
}

使用 if (siteArray.length==0) 判断数组是否为空,或者更简单的方法是使用 if (!siteArray.length)


@Dennis 好观点,它已经滚动出窗口了,我没有看到它。尽管如此,它对于一个空数组是有效的。需要更多数据 :/ - Phrogz
我一直在想为什么我的比较不起作用。谢谢,现在很清楚了。 - MattieG4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接