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

Vậy làm thế nào để tôi phá vỡ hoặc tiếp tục Ext.each loop?Làm thế nào để phá vỡ hoặc tiếp tục Ext.each

+0

Dưới đây là ngoại lệ tương tự mà tôi nhận được khi không thực hiện việc này và xóa đối tượng. Do đó itemId không có ở đó. "Uncaught TypeError: Không thể đọc thuộc tính 'itemId' của undefined" – MacGyver

Trả lời

39

Từ docs:

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

Vì vậy, như trong ví dụ của OP (giả sử record là trong phạm vi và không null):

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

Lưu ý rằng trở false thoát vòng lặp hoàn toàn, vì vậy trong trường hợp này, bản ghi không phù hợp đầu tiên sẽ bỏ qua bất kỳ kiểm tra bổ sung nào.

Tuy nhiên tôi đoán rằng những gì bạn đang thực sự cố gắng làm là vòng cho đến bạn tìm thấy bản ghi khớp, thực hiện một số logic, sau đó đoản mạch vòng lặp. Nếu đó là trường hợp, logic sẽ thực sự là:

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

Bất kỳ giá trị khác mà không phải là rõ ràng false (ví dụ null theo mặc định) sẽ tiếp tục vòng lặp đi.

+0

Tuyệt vời, nhưng làm thế nào để tiếp tục? –

+20

Trả lại bất cứ điều gì nhưng sai. –

+0

Yay Tô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

Return false để 'phá vỡ' và trở về bất cứ điều gì nhưng false để 'tiếp tục'.

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 
    } 
}) 
Các vấn đề liên quan