Подтвердить что ты не робот

Как нарушить или продолжить Ext.each

Ext.each(boundsExtend, function(value)
{
    if(value != record.ID) break;
});

Итак, как я могу сломать или продолжить цикл Ext.each?

4b9b3361

Ответ 1

Из 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 по умолчанию), сохранит цикл.

Ответ 2

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
}
});

Ответ 3

Верните 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
    }
})