Ext.each(boundsExtend, function(value)
{
if(value != record.ID) break;
});
では、Ext.eachループを中断または継続するにはどうすればよいですか?
docs から:
指定された関数がfalseを返す場合、反復は停止し、このメソッドは現在のインデックスを返します。
OPの例のように(record
がスコープ内にあり、nullでないと仮定):
Ext.each(boundsExtend, function(value) {
if (value != record.ID) {
return false;
}
// other logic here if ids do match
});
false
を返すとループが完全に終了するため、この場合、最初の一致しないレコードは追加のチェックをバイパスします。
しかし、私があなたが本当にやろうとしていることは、一致するレコードを見つけるまでループするuntilであり、いくつかのロジックを実行してから、ループ。その場合、ロジックは実際には次のようになります。
Ext.each(boundsExtend, function(value) {
if (value === record.ID) {
// do your match logic here...
// if we're done, exit the loop:
return false;
}
// no match, so keep looping (i.e. "continue")
});
明示的にfalse
ではない他の値(デフォルトではnull
など)はループを続行します。
var countries = ['Vietnam', 'Singapore', 'United States', 'Russia'];
Ext.Array.each(countries, function(name, index, countriesItSelf) {
console.log(name);
});
Ext.Array.each(countries, function(name, index, countriesItSelf) {
if (name === 'Singapore') {
return false; // break here
}
});
false
を 'break'に戻し、false
以外のものを 'continue'に戻します。
var array = [1, 2, 3];
Ext.each(array, function(ele){
console.log(ele);
if(ele !== 2){
return false; // break out of `each`
}
})
Ext.each(array, function(ele){
console.log(ele);
if(ele !== 3){
return true; // continue
}
})