Enumerable#eachはbreakできます
prototype.jsのインポートで利用可となる、「Enumerable#each()」ですが、これちゃんとbreakできるんですね。具体的には、「throw $break;」とすることで、以降の要素の列挙がキャンセルとなります。
var out = document.getElementById( "out" ); var array = [1,2,3,4,5,6] // 配列を列挙 var sum = 0; array.each( function( item, index ) { if ( index > 3 ) throw $break // $breakをthrow すると列挙を停止できる。 sum += item; }); out.innerHTML += sum + "<br/>"; // 10 // $breakは内部的にeachを利用しているEnumerableのメソッドでも使える。 out.innerHTML += array.inject( 0, function( sum, item, index ) { if ( index > 3 ) throw $break sum += item; return sum }) + "<br/>"; // 10
いやー、芸が細かい。