我想知道如何在jQuery中检查数组是否为空或null。我尝试过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
}发布于 2011-08-26 07:48:56
只要您的选择器确实有效,我就看不出您的检查数组长度的代码有什么问题。这应该是你想要的。有很多方法可以让你的代码更简单,更具可读性。这是一个清理过的版本,上面有关于我清理过的内容的说明。
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()循环就不会运行,因此如果在同一函数中多次使用$( $(this) ),.each()循环中的$(this)总是低效的。更好的方法是把它放到一个局部变量中,然后从推荐的本地variable.[]而不是new Array().if (value)初始化数组,这样就不需要使用value == null,value == undefined和value == ""了。您可以这样做:只要数组是有效的、已初始化的数组(在这里),检查所有三个空的conditions.if (album_text.length === 0)的if (value)就会告诉您数组是否为空。你想用这个选择器$("input[name='album_text[]']")做什么?
发布于 2014-06-03 00:38:32
用户JQuery为EmptyObject,用于检查数组是否包含元素。
var testArray=[1,2,3,4,5];
var testArray1=[];
console.log(jQuery.isEmptyObject(testArray)); //false
console.log(jQuery.isEmptyObject(testArray1)); //true发布于 2016-02-22 15:06:58
我认为使用jquery中的$.isEmptyObject来检查数组是否为空是很危险的,就像@jesenko提到的那样。我刚刚遇到了这个问题。
在isEmptyObject doc中,它提到:
参数应始终为纯JavaScript对象
你可以通过$.isPlainObject来确定。$.isPlainObject([])的返回为false。
https://stackoverflow.com/questions/7198197
复制相似问题