ぼちぼちunderscore.jsプログラミング

JavaScriptが便利になるunderscore.jsの使い方をぼちぼち学ぼうと思う。

以下の実験は、node.jsで行う。
対話モードで実行してもいいし、プログラムとして実行してもかまわない。

まずは、underscore.jsを読み込む。

_u = require('./underscore-min.js'); //underscore.jsのファイルを読み込む場合
_u = require('underscore');          //node.jsにインストールされたunderscore.jsを読み込む場合

※変数_uは、他に使用していないものであればなんでもよい。

■underscore.jsで使うオブジェクトの準備

var lang = [JavaScript:'インタプリタ',
            Java:'コンパイラ',
            Z80:'アセンブラ',
            bash:'インタプリタ',
            C:'コンパイラ'];

それでは、実験開始。

■keys
オブジェクト自身が持っているキーを配列として返す。(プロトタイプ継承したものを含めない)

_u.keys(lang)
=>[ 'JavaScript', 'Java', 'Z80', 'bash', 'C' ]

■values
オブジェクト自身が持っている値を配列として返す。(プロトタイプ継承したものを含めない)

_u.values(lang);
=>[ 'インタプリタ', 'コンパイラ', 'アセンブラ', 'インタプリタ', 'コンパイラ' ]

■allKeys
プロトタイプ継承したものも含め、オブジェクトが持っているキーを配列として返す。

//langのコンストラクタ関数のprototypeオブジェクトにinfoプロパティをセットする。
lang.constructor.prototype.info = 'プログラミング言語';
_u.allKeys(lang);
=>[ 'JavaScript', 'Java', 'Z80', 'bash', 'C', 'info' ]

■pairs
オブジェクトのプロパティと値を配列にしたものを、さらに配列に変換する。

_u.pairs(lang)
=>[ [ 'JavaScript', 'インタプリタ' ],
  [ 'Java', 'コンパイラ' ],
  [ 'Z80', 'アセンブラ' ],
  [ 'bash', 'インタプリタ' ],
  [ 'C', 'コンパイラ' ] ]

■mapObject
オブジェクトの値になんらかの処理を施し、それを新たな値としたオブジェクトを返す。

_u.mapObject(lang, function(key, value) {
    return value.length;
});
=>{ JavaScript: 10, Java: 4, Z80: 3, bash: 4, C: 1 }

ふー、たくさんあるなあ。
今日はこれぐらいでやめとこ。