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

どのようにしてExt.eachループを壊したり続けるのですか? docsから中断する方法Ext.each

+0

私がこれをやっておらず、オブジェクトを取り除いても、同様の例外があります。したがって、itemIdは存在しませんでした。 "Uncaught TypeError:未定義の 'itemId'プロパティを読み取ることができません" – MacGyver

答えて

39

:OPの例のように(recordを想定する範囲と非ヌルである)

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

falseを返すことは、完全にループを抜けること

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

注、そうこの場合、最初の不一致レコードは追加検査をバイパスします。

しかし、実際にやっていることは、ループまで見つけることができます。一致するレコードを見つけたら、ロジックを行い、ループを短絡してください。その場合は、ロジックは、実際に次のようになります。

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デフォルトでは)行きのループを維持します。 'ブレーク' と '継続' にfalseが、何かを返すように

+0

素晴らしいですが、続けるには? –

+20

false以外は何も返しません。 –

+0

私はブライアンのアップモディファイド –

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

戻り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 
    } 
}) 
関連する問題