jQuery.each()のutilに次の繰り返しにスキップするには?
-
20-08-2019 - |
質問
私は、要素の配列を反復処理しようとしています。 jQueryのドキュメントは言う:
非falseを返すことは、forループでcontinue文と同じです。、それが次の繰り返しにすぐにスキップします。
私は呼び出し試みた「非falseを返します;」そして「非偽;」次の繰り返しにスキップどちらも(サンセリフは返します)。代わりに、彼らはループを破ります。私は何をしないのですか?
解決
は、非偽の意味は何かます:
return true;
だから、このコード:
var arr = [ "one", "two", "three", "four", "five" ];
$.each(arr, function(i) {
if(arr[i] == 'three') {
return true;
}
alert(arr[i]);
});
1、2、4、5に警告します。
他のヒント
「非falseを返す」ことで、彼らはブール値をfalseにうまくいかない任意の値を返すことを意味します。ですから、true
返すことができ、1
、'non-false'
、または任意の他、あなたが最高だと思うことができます。
Javascriptが一種の「truthiness」と「falsiness」のアイデアを持っています。変数は、値を持っている場合、一般的には「truthiness」が)あなたが表示されます9AS - ヌル、または値が「falsiness」になる傾向ません。かもしれないのヘルプ以下のスニペットます:
var temp1;
if ( temp1 )... // false
var temp2 = true;
if ( temp2 )... // true
var temp3 = "";
if ( temp3 ).... // false
var temp4 = "hello world";
if ( temp4 )... // true
うまくいけば、それが役立ちます?
また、そのダグラス・クロックフォードからこれらのビデオをチェックアウトする価値
更新:壊れたリンクをスポッティングため@cphpython感謝 - 私は今働いバージョンを指すように更新しました。
は、あなたが時々ちょうど次の反復に到達するためにブロックの終わりをオフに落ちることができることを忘れてはいけません
$(".row").each( function() {
if ( ! leaveTheLoop ) {
... do stuff here ...
}
});
というよりも実際にこのように返します:
$(".row").each( function() {
if ( leaveTheLoop )
return; //go to next iteration in .each()
... do stuff here ...
});
ループのみの休憩あなたは文字通り返す場合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に適用されます。しかし、あなたは機能の下を終了するときに、本当に、あなたも何も返さないされ、ループが続く理由ですので、私はそれを返す何ものの継続しないことができなかった全く可能性がないことを期待しますループ。彼らはのいるの行き、それを維持する方法であることを何も返さない、行くループを維持するために何かを返す開始するために皆を強制したい場合を除きます。
jQuery.noop()のを助けることができます。
$(".row").each( function() {
if (skipIteration) {
$.noop()
}
else{doSomething}
});