Ext.each(boundsExtend, function(value)
{
if(value != record.ID) break;
});
Итак, как я могу сломать или продолжить цикл Ext.each?
Ext.each(boundsExtend, function(value)
{
if(value != record.ID) break;
});
Итак, как я могу сломать или продолжить цикл Ext.each?
Из docs:
Если возвращаемая функция возвращается false, итерация останавливается и этот метод возвращает текущий индекс.
Так, как в примере OP (предполагая, что record
находится в области и не является нулевым):
Ext.each(boundsExtend, function(value) {
if (value != record.ID) {
return false;
}
// other logic here if ids do match
});
Обратите внимание, что возврат false
полностью завершает цикл, поэтому в этом случае первая несогласованная запись обходит любую дополнительную проверку.
Однако я предполагаю, что то, что вы действительно пытаетесь сделать, это цикл, пока вы не найдете подходящую запись, не выполните некоторую логику, а затем закоротите цикл. Если это так, логика будет на самом деле:
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
, чтобы продолжить.
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
}
})