检查数组是否为空或空

我想知道如何检查在jQuery中数组是否为空或空。 我试过array.length === 0但它没有工作。 它也没有抛出任何错误。

这是代码:

 var album_text = new Array(); $("input[name='album_text[]']").each(function(){ if( $(this).val() && $(this).val() != '') { album_text.push($(this).val()); } }); if (album_text.length === 0) { $('#error_message').html("Error"); } else { // send data } 

只要你的select器实际上工作,我没有看到你的代码检查数组的长度错误。 这应该做你想要的。 有很多方法来清理你的代码,使其更简单,更具可读性。 这是一个清理版本,里面有关于我清理的内容。

 var album_text = []; $("input[name='album_text[]']").each(function() { var value = $(this).val(); if (value) { album_text.push(value); } }); if (album_text.length === 0) { $('#error_message').html("Error"); } else { //send data } 

一些关于你在做什么和我改变了什么的笔记。

  1. $(this)总是一个有效的jQuery对象,所以没有理由检查if ($(this)) 。 它里面可能没有任何DOM对象,但是如果需要的话,可以用$(this).length来检查,但在这里没有必要,因为如果没有这样的项目, .each() $(this)在你的.each()循环里永远是一些东西。
  2. 在相同的函数中多次使用$(this)是低效的。 最好把它变成局部variables,然后从局部variables中使用它。
  3. build议使用[]而不是new Array()初始化数组。
  4. if (value)时,值预期是一个string将既保护value == nullvalue == undefinedvalue == ""所以你不必做, if (value && (value != "")) 。 你可以这样做: if (value)检查所有三个空的条件。
  5. if (album_text.length === 0)会告诉你,如果数组是空的,只要它是一个有效的初始化数组(它在这里)。

你想用这个select器做什么$("input[name='album_text[]']")

用户JQuery是EmptyObject来检查数组是否包含元素。

 var testArray=[1,2,3,4,5]; var testArray1=[]; console.log(jQuery.isEmptyObject(testArray)); //false console.log(jQuery.isEmptyObject(testArray1)); //true 

在推入数组之前,您应该检查'' (空string)。 你的数组的元素是空string。 那么你的album_text.length === 0将工作得很好。

我认为从jquery使用$ .isEmptyObject来检查数组是否为空是非常危险的,就像@jesenko提到的那样。 我刚刚遇到了这个问题。

在isEmptyObject文档中 ,它提到:

参数应该总是一个普通的JavaScript对象

你可以通过$.isPlainObject来确定。 $.isPlainObject([])的返回值为false。