455

要素の配列を反復処理しようとしています。jQueryのドキュメントには次のように書かれています。

jquery.Each()ドキュメント

false以外を返すことは、forループのcontinueステートメントと同じであり、すぐに次の反復にスキップします。

'returnnon-false;'を呼び出してみました。および'非偽;' (戻り値なし)どちらも次の反復にスキップしません。代わりに、それらはループを壊します。私は何が欠けていますか?

4

6 に答える 6

814

非偽とは、次のことを意味します。

return true;

したがって、このコード:

var arr = ["one", "two", "three", "four", "five"];
$.each(arr, function(i) {
  if (arr[i] == 'three') {
    return true;
  }
  console.log(arr[i]);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

ログoneに記録されますtwo、、、。fourfive

于 2009-01-26T22:16:07.100 に答える
62

'return non-false'とは、ブール値のfalseに変換されない値を返すことを意味します。だから、、、、、またはあなたが考えることができる他のものをtrue返す1ことができます。'non-false'

于 2009-01-26T22:18:50.060 に答える
5

Javascript には、「真実」と「虚偽」という概念があります。変数に値がある場合、一般的には 9ご覧のように) それは「真実性」を持っています - null、または値がない場合は「虚偽」になる傾向があります。以下のスニペットが役立つ場合があります。

var temp1; 
if ( temp1 )...  // false

var temp2 = true;
if ( temp2 )...  // true

var temp3 = "";
if ( temp3 ).... // false

var temp4 = "hello world";
if ( temp4 )...  // true

うまくいけば、それは役に立ちますか?

また、Douglas Crockford のこれらのビデオもチェックする価値があります。

更新:壊れたリンクを見つけてくれた@cphpythonに感謝します-現在動作中のバージョンを指すように更新しました

Javascript 言語

Javascript - 良い部分

于 2009-01-26T23:27:09.983 に答える
3

ループは、文字どおりに戻った場合にのみfalse中断されます。元:

// this is how jquery calls your function
// notice hard comparison (===) against false
if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
   break;
}

undefinedこれは、何も返さない場合に返される を含む、他のものを返すことができることを意味するため、空の return ステートメントを使用するだけで済みます。

$.each(collection, function (index, item) {
   if (!someTestCondition)
      return; // go to next iteration

   // otherwise do something
});

これはバージョンによって異なる可能性があります。これは jquery 1.12.4 に適用されます。しかし、実際には、関数の最後を終了すると、何も返されず、それがループが続く理由です. ループを継続するために全員に何かを返すように強制したい場合を除き、ループを継続させるには何も返さない必要があります。

于 2016-09-23T21:44:45.200 に答える
-3

jQuery.noop()が役立ちます

$(".row").each( function() {
    if (skipIteration) {
        $.noop()
    }
    else{doSomething}
});
于 2016-08-22T10:13:08.627 に答える