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.
User JQuery is EmptyObject to check whether array is contains elements or not.
var testArray=[1,2,3,4,5];
var testArray1=[];
console.log(jQuery.isEmptyObject(testArray)); //false
console.log(jQuery.isEmptyObject(testArray1)); //true
You should check for ''
(empty string) before pushing into your array. Your array has elements that are empty strings. Then your album_text.length === 0
will work just fine.
As long as your selector is actually working, I see nothing wrong with your code that checks the length of the array. That should do what you want. There are a lot of ways to clean up your code to be simpler and more readable. Here's a cleaned up version with notes about what I cleaned up.
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
}
Some notes on what you were doing and what I changed.
$(this)
is always a valid jQuery object so there's no reason to ever check if ($(this))
. It may not have any DOM objects inside it, but you can check that with $(this).length
if you need to, but that is not necessary here because the .each()
loop wouldn't run if there were no items so $(this)
inside your .each()
loop will always be something.[]
rather than new Array()
.if (value)
when value is expected to be a string will both protect from value == null
, value == undefined
and value == ""
so you don't have to do if (value && (value != ""))
. You can just do: if (value)
to check for all three empty conditions.if (album_text.length === 0)
will tell you if the array is empty as long as it is a valid, initialized array (which it is here).What are you trying to do with this selector $("input[name='album_text[]']")
?
I think it is dangerous to use $.isEmptyObject from jquery to check whether the array is empty, as @jesenko mentioned. I just met that problem.
In the isEmptyObject doc, it mentions:
The argument should always be a plain JavaScript Object
which you can determine by $.isPlainObject
. The return of $.isPlainObject([])
is false.