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
}
あなたのセレクタが実際に動作している限り、配列の長さをチェックするあなたのコードには何の問題もありません。それはあなたが望むことをするはずです。コードを整理して読みやすくする方法はたくさんあります。これは私がクリーンアップしたものについてのメモ付きのクリーンアップされたバージョンです。
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()
になります。何か。new Array()
ではなく[]
で配列を初期化することをお勧めします。if (value)
は、両方ともvalue == null
、value == undefined
およびvalue == ""
から保護するので、if (value && (value != ""))
を行う必要はありません。 if (value)
を実行すれば、3つの空の条件すべてをチェックできます。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
は問題なく動作します。
@jesenkoが述べたように、配列が空かどうか調べるためにjqueryから$ .isEmptyObjectを使うのは危険だと思います。私はちょうどその問題に出会った。
isEmptyObject doc には、次のように記載されています。
引数は常に普通のJavaScriptオブジェクトであるべきです
これは$.isPlainObject
で決定できます。 $.isPlainObject([])
の戻り値はfalseです。