EmberのforEachイテレータから抜け出す方法はありますか?
コールバック(a la jQuery)でfalseを返そうとしましたが、機能しません。
ありがとう!PJ
Array#some
またはを使用できますArray#every
[1,2,3].some(function(element) {
return true; // Break the loop
});
[1,2,3].every(function(element) {
return false; // Break the loop
});
詳細情報here
Emberは、Array.prototype.forEach
利用可能な場合はネイティブを使用し、利用できない場合はエミュレートします。https://github.com/emberjs/ember.js/blob/v1.0.0-rc.1/packages/ember-metal/lib/array.js#L45を参照してください。
JavaScriptforEach
は破壊をサポートしていません。https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/forEachを参照してください
いいえ、私はそうは思いません。cfrJamesは、foreachコードを見ると、内部でforループを使用していることがわかります。例外をスローすることもできますが、それはスパゲッティコードを書くようなものです。しかし、それは可能かもしれません、あなたはgithubで機能リクエストをすることができますか?または、forループを中断する独自の実装を記述します。
Array#findを使用し、trueを返すと、ループから抜け出します。
を使用toArray
すると、配列の順序が削除される可能性があり、目的が損なわれる可能性があります。通常のforループを使用することもできますが、それを使用objectAt
して機能させることができます。
var emberArray = [ ... Array of Ember objects ... ],
min = 3,
max = emberArray.get('length'),
targetObject;
for( var i = min; i < max; i++ ){
targetObject = emberArray.objectAt( i );
if( targetObject.get('breakHere') ) {
break;
}
}
これには、特定のインデックスから開始できるという追加の利点があるため、最小数のアイテムをループできます。