|
||||||||||||||||
| 前のページ 1 2 | ||||||||||||||||
| injectメソッド | ||||||||||||||||
|
injectメソッドも、eachやcollectのようにそれぞれの要素に対してイテレータを実行していくメソッドです。ただし、injectメソッドでは、最後のイテレータの返した値がメソッド自体の返り値となります。そして、イテレータには前のイテレータが返した値が引数として渡されます。最初のイテレータにはinjectメソッドの第1引数が渡されます。 言葉で説明しても少しわかりにくいと思いますので、リスト16の例を見てください。このように、配列から文字列が生成されていくのがわかります。 リスト16:injectメソッド
var array = [1, 2, 3, 4, 5];
このように、injectメソッドは配列から何かしらのオブジェクトを生成するために使われます。配列内のデータの集計などに使われることがよくあります。 |
||||||||||||||||
| invokeメソッド | ||||||||||||||||
|
invokeメソッドは、基本的にcollectメソッドと同じことをするメソッドなのですが、処理の指定方法が違います。invokeメソッドでは配列の各要素に対して実行させたいメソッド名を渡すのです。 例えば、リスト17を見てください。 リスト17:invokeメソッド
var array = ['JavaScript', 'Prototype.js'];
この例では、配列を含むすべての要素に対してtoUpperCaseメソッドを呼び出しました。つまり、array.collect(function(e){returne.toUpperCase(); })を呼び出したのと同じ結果になります。また、invokeメソッドの第2引数以降を指定した場合は、メソッド呼び出しの引数として渡されます。 |
||||||||||||||||
| イテレータの実行制御 | ||||||||||||||||
|
ここまで、さまざまなイテレータを紹介してきました。これらのイテレータの中では、共通して$breakや$continueという特別な意味を持ったオブジェクトを使うことができます。これらのオブジェクトをthrowすることによって途中で処理を中断したり、特定の要素に対する処理を飛ばしたりできるのです。 リスト18の例を見てください。 リスト18:$break、$continueによる実行制御
var array = [1, 2, 3, 4];
最初のcollectでは、要素の値が3の場合に、それ以上の走査を中断しています。2つ目のcollectでは、要素の値が3の場合の処理を飛ばしています。このようにイテレータ内部でフロー管理を行うこともでき、より柔軟な配列の走査を実現できます。 |
||||||||||||||||
| 次回は | ||||||||||||||||
|
次回はDOMの拡張について解説していきます。 |
||||||||||||||||
|
前のページ 1 2 |
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||

