[英]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
}
关于你在做什么和我改变了什么的一些注意事项。
$(this)
始终是一个有效的jQuery对象,因此没有理由检查if ($(this))
。 它里面可能没有任何DOM对象,但如果你需要,你可以用$(this).length
来检查,但是这里没有必要,因为如果没有项目,那么.each()
循环就不会运行你的.each()
循环中的$(this)
将永远是一个东西。 []
而不是new Array()
初始化数组。 if (value)
当值预期为一个字符串时,将同时保护value == null
, value == undefined
和value == ""
所以你不必做if (value && (value != ""))
。 您可以这样做: if (value)
检查所有三个空条件。 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.