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

Jak mogę przerwać lub kontynuować pętlę Ext.each?Jak złamać lub kontynuować Ext.each

+0

Oto podobny wyjątek, jaki otrzymałem, gdy tego nie robiłem i usuwanie obiektu. Dlatego itemId nie było. "Uncaught TypeError: Nie można odczytać właściwości" itemId "z undefined" – MacGyver

Odpowiedz

39

Z docs:

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

Tak jak w przykładzie PO jest (zakładając record jest w zakresie i nie jest pusta):

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

Uwaga że powrót false wyjście z pętli całkowicie, tak w tym przypadku pierwszy rekord nie pasujący pominie dodatkowe sprawdzanie.

Jednak domyślam się, że tak naprawdę próbujesz zrobić pętlę , aż do znajdziesz pasujący rekord, wykonasz jakąś logikę, a następnie zwiążesz pętlę. Jeśli to przypadek, logika byłby rzeczywiście:

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

Każda inna wartość, która nie jest wyraźnie false (np null domyślnie) będzie utrzymywać pętlę dzieje.

+0

Świetnie, ale jak kontynuować? –

+20

Zwraca cokolwiek poza fałszem. –

+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

Powrót false do 'przerwy' i nic poza false do 'continue' powrotu.

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 
    } 
}) 
Powiązane problemy