2009-09-29 10 views
19
Ext.each(boundsExtend, function(value) 
{ 
    if(value != record.ID) break; 
}); 

Quindi, come posso interrompere o continuare il ciclo Ext.each?Come interrompere o continuare Ext.each

+0

Ecco un'eccezione simile ottenuta quando non lo faccio e rimuovendo un oggetto. Quindi itemId non c'era. "Uncaught TypeError: Impossibile leggere la proprietà 'itemId' di undefined" – MacGyver

risposta

39

Dal docs:

If the supplied function returns false, iteration stops and this method returns the current index.

Così come nell'esempio del PO (supponendo record è portata e non nullo):

Ext.each(boundsExtend, function(value) { 
    if (value != record.ID) { 
    return false; 
    } 
    // other logic here if ids do match 
}); 

noti che il ritorno false esce completamente i loop, così in questo caso il primo record non corrispondente ignorerà qualsiasi controllo aggiuntivo.

Tuttavia, suppongo che ciò che si sta provando a fare sia il ciclo fino al si trovi il record corrispondente, si faccia un po 'di logica, quindi si interrompa il ciclo. Se questo è il caso, la logica sarebbe in realtà:

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

Qualsiasi altro valore che non è esplicitamente false (ad esempio null per impostazione predefinita) non mancherà di tenere il ciclo in corso.

+0

Grande, ma come continuare? –

+20

Restituisce altro che falso. –

+0

Yay I up-modded Brian –

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

Ritorna false a 'rompere' e tornare tutt'altro che false a 'continuare'.

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 
    } 
}) 
Problemi correlati