「Underscore.js」という便利なJavaScriptライブラリがあります。
このライブラリでは「_」という関数オブジェクトが提供されています。このオブジェクトに定義されている関数を直接使う方法(_.each(array, function(element) { … }); のようにする)と、引数へ対象オブジェクトを渡して使う方法(_(array).each(function(element) { … });)があります。
例として each, map, find, filter の使い方を示します。馴染みの関数ばかりなので、特別な説明もいらないでしょうが、eachは各要素に対して処理をしますし、mapは各要素に処理を適用して新しい配列をつくりますし、findは条件に一致する要素を見つけますし、filterは条件に一致する要素の新しい配列をつくります。
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>sample16</title> <script src="underscore-min.js"></script> </head> <body> <div id="logtext" style="position:absolute;"></div><br /> <script> function log(element) { var html = document.getElementById('logtext').innerHTML; document.getElementById('logtext').innerHTML = html + '<br>' + element; } log("_.each([1, 2, 3], log)"); _.each([1, 2, 3], log); log("_.each({one : 1, two : 2, three : 3}, log)"); _.each({one : 1, two : 2, three : 3}, log); var result0 = _.map([1, 2, 3], function(num){ return num * 3; }); log("_.map([1, 2, 3], function(num){ return num * 3; })"); _.each(result0, log); var result1 = _.map({one : 1, two : 2, three : 3}, function(num, key){ return num * 3; }); log("_.map({one : 1, two : 2, three : 3}, function(num, key){ return num * 3; })"); _.each(result1, log); var even = _.find([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; }); log("_.find([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; }"); log(even); var evens = _.filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; }); log("_.filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; })"); _.each(evens, log); </script> </body> </html>
JavaScriptについては、下記の書籍の参考になるでしょう。
- JavaScriptプログラミング入門 第2版
- JavaScript本格入門 ~モダンスタイルによる基礎からAjax・jQueryまで
- JavaScriptテクニックバイブル ~効率的な開発に役立つ150の技
プログラミング言語一般については、下記が参考になるでしょう。
- クラスベースのオブジェクト指向プログラミング言語の基礎を学ぶには … 改訂版 基礎Java(CD-ROM付) (IMPRESS KISO SERIES)
- クラスベースのオブジェクト指向プログラミング言語を学ぶには … プログラミング言語Java (The Java Series)
- 関数型プログラミング言語を学ぶには … Scalaスケーラブルプログラミング第2版
- プログラミング言語の理論を学には … プログラミング言語の基礎概念 (ライブラリ情報学コア・テキスト)