1. ホーム
  2. jquery

[解決済み] 配列が空かヌルかチェックする

2022-05-14 09:45:01

質問

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
}

あなたがやっていたこと、私が変更したことのメモです。

  1. $(this) は常に有効な jQuery オブジェクトであるため、これまで if ($(this)) . これは内部に DOM オブジェクトを持たないかもしれませんが、それを確認するには $(this).length で確認することができますが、ここではその必要はありません。 .each() ループはアイテムがなければ実行されないので、ここでは必要ありません。 $(this) の中に .each() のループ内は常に何かになります。
  2. 同じ関数内で何度も$(this)を使うのは非効率的です。 一度ローカル変数に取り込んで、そのローカル変数から使用する方がずっと良い。
  3. で配列を初期化することが推奨されます。 [] ではなく new Array()
  4. if (value)
  5. value == null
value == undefined