【问题标题】:Javascript: How to test if response JSON array is emptyJavascript:如何测试响应 JSON 数组是否为空
【发布时间】:2013-05-03 02:18:45
【问题描述】:

我正在返回以下 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');
            }
       }
});

但是警报没有触发。 :[

【问题讨论】:

  • console.log(siteArray) 告诉你什么?
  • []。我试过 if siteArray === "[]" 但这也没有用
  • 空数组与nullundefined等不同。
  • .length === 0 也没有捕捉到它
  • console.log(siteArray.length) 向您展示了什么?

标签: json jquery


【解决方案1】:

使用$.isArray() 检查对象是否为数组。然后可以检查length属性的真实性,看是否为空。

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

【讨论】:

  • 做到了,而且更加优雅
  • 这是一个不幸的问题解决方案。为什么这行得通,而 OP 的代码却不行?
【解决方案2】:

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

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

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

【讨论】:

  • @Dennis 好点,它是从窗口滚动出来的,我没看到。尽管如此,它仍适用于空数组。需要更多数据:/
猜你喜欢
  • 1970-01-01
  • 2021-06-04
  • 2011-11-26
  • 2019-03-22
  • 1970-01-01
  • 2011-11-09
  • 2011-08-20
  • 1970-01-01
  • 2023-03-26
相关资源
最近更新 更多