「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版
- プログラミング言語の理論を学には … プログラミング言語の基礎概念 (ライブラリ情報学コア・テキスト)