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 }
ふー、たくさんあるなあ。
今日はこれぐらいでやめとこ。