繁体   English   中英

检查数组是否为空或空

[英]Check if array is empty or null

我想知道如何在 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
}

只要您的选择器实际工作,我看到您的代码检查数组的长度没有任何问题。 那应该做你想要的。 清理代码有很多方法可以更简单,更易读。 这是一个清理版本,附有关于我清理的内容的说明。

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()循环就不会运行你的.each()循环中的$(this)将永远是一个东西。
  2. 在同一个函数中多次使用$(this)效率很低。 将它一次放入局部变量然后从该局部变量中使用它会好得多。
  3. 建议使用[]而不是new Array()初始化数组。
  4. if (value)当值预期为一个字符串时,将同时保护value == nullvalue == undefinedvalue == ""所以你不必做if (value && (value != "")) 您可以这样做: if (value)检查所有三个空条件。
  5. if (album_text.length === 0)将告诉您数组是否为空,只要它是一个有效的初始化数组(它在这里)。

你想用这个选择器做什么$("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

在推入阵列之前,您应该检查'' (空字符串)。 您的数组包含空字符串元素。 那么你的album_text.length === 0就可以了。

我认为使用来自jquery的$ .isEmptyObject检查数组是否为空是危险的,正如@jesenko所提到的那样。 我刚遇到那个问题。

isEmptyObject文档中 ,它提到:

参数应始终是纯JavaScript对象

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

/*
  Basic Checking with undefined array for Jquery Array
*/
if (typeof myArray !== 'undefined' && myArray.length > 0) {
    console.log('myArray is not empty.');
}else{
    console.log('myArray is empty.');
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM