Check if array is empty or null

I would like to know how to check if an array is empty or null in jQuery. I tried array.length === 0 but it didn't work. It did not throw any error either.

This is the code:

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
}
480671 次浏览

在推入数组之前,应该检查 ''(空字符串)。数组中的元素为空字符串。那么你的 album_text.length === 0就可以正常工作了。

只要您的选择器正常工作,我就不会发现检查数组长度的代码有什么问题。这应该就是你想要的。有很多方法可以清理您的代码,使其更简单、更易读。这是一个清理过的版本,里面有我清理过的东西的注释。

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. It's inefficient to use $(this) multiple times in the same function. Much better to get it once into a local variable and then use it from that local variable.
  3. 建议使用 []而不是 new Array()初始化数组。
  4. 当值预计是一个字符串时,if (value)将同时保护 value == nullvalue == undefinedvalue == "",所以你不必做 if (value && (value != ""))。您可以只做: if (value)来检查所有三个空条件。
  5. 只要数组是有效的初始化数组(在这里) ,if (album_text.length === 0)就会告诉您数组是否为空。

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

UserJQuery 是 EmptyObject,用于检查数组是否包含元素。

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

我认为使用 $是危险的。IsEmptyObject 检查数组是否为空,如@jesenko 提到的。我刚遇到这个问题。

是 EmptyObject 文档中,它提到:

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

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

/*
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.');
}