如何打破或继续Ext.each

时间:2009-09-29 11:32:31

标签: extjs

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

那么我如何打破或继续Ext.each循环?

3 个答案:

答案 0 :(得分:41)

来自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)都会保持循环。

答案 1 :(得分:4)

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

答案 2 :(得分:1)

false返回“中断”并返回除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
    }
})