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

Alors comment rompre ou continuer la boucle Ext.each?Comment rompre ou continuer Ext.each

+0

Voici une exception semblable à celle que j'ai obtenue en ne faisant pas cela, et en supprimant un objet. Par conséquent itemId n'était pas là. "TypeError non intercepté: Impossible de lire la propriété 'itemId' de undefined" – MacGyver

Répondre

39

De l'docs:

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

Ainsi, comme dans l'exemple de l'OP (en supposant record est portée et non nul):

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

Notez que le retour false sort complètement la boucle, de sorte dans ce cas, le premier enregistrement non-correspondant contournera toute vérification supplémentaire.

Cependant, je suppose que ce que vous essayez vraiment de faire est la boucle jusqu'à vous trouvez l'enregistrement correspondant, faire de la logique, puis court-circuiter la boucle. Si tel est le cas, la logique serait en fait:

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

Toute autre valeur qui ne sont pas explicitement false (par exemple null par défaut) gardera la boucle en cours.

+0

Excellent, mais comment continuer? –

+20

Renvoie tout sauf false. –

+0

Yay je 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

Retour false de 'casser' et retourner quoi que ce soit, mais false à 'continuer'.

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 
    } 
}) 
Questions connexes