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 } 45 Answers
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 checkif ($(this)). It may not have any DOM objects inside it, but you can check that with$(this).lengthif 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.- 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.
- It's recommended to initialize arrays with
[]rather thannew Array(). if (value)when value is expected to be a string will both protect fromvalue == null,value == undefinedandvalue == ""so you don't have to doif (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[]']")?
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 4I 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.
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.
/* 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.'); }