Underscore.js は、Node.jsで最も利用されているパッケージです。JavaScriptに60以上の機能を追加します。
大きく6つの機能に分類されます。
- Collections: Map/Reduce、ソート、検索、最大値、最小値、グループ化など
- Arrays: 先頭、末尾の取得、結合、ユニークなど
- Functions: バインド、遅延処理、後処理など
- Objects: Key/Value、型判定など
- Utility: エスケープ処理、IDなど
- Chaining: チェイン処理
数が多いのでその日の気分で少しづつ紹介します。サンプルはCoffeeScriptで記述します。
インストール方法はいつも通り。
$ npm install underscore
each
eachは、配列やオブジェクトを一つ一つ処理します(イテレータ)。配列の場合、コールバックに一つの引数を指定します。オブジェクトの場合、コールバックに引数を2つ、値/キーの順で指定します。
_ = require 'underscore' _.each [1,2,3], (n)-> console.log n _.each {one:1, two:2, three:3}, (value, key)-> console.log key + '=' + value
$ coffee each.coffee 1 2 3 one=1 two=2 three=3
map
mapは、eachに似ていますが、eachではコールバック内に処理を記述するのに対して、mapではコールバックで処理した結果を配列で返します。
_ = require 'underscore' console.log _.map [1,2,3], (n)-> n * 3 console.log _.map {one:1, two:2, three:3}, (value, key)-> key + ' x 3 = ' + value * 3
$ coffee map.coffee [ 3, 6, 9 ] [ 'one x 3 = 3', 'two x 3 = 6', 'three x 3 = 9' ]
reduce
reduceは、与えられたリストをイテレータに従って処理し、一つの値を返します。この例で、nはリストのうち一つの値、memoは前の処理結果(n+memo)です。最後のmemoの10は初期値です。初期値10に対して、1を加算し11、その11に2を加算して13、さらに13に3を加算して16。
_ = require 'underscore' result = _.reduce [1,2,3], (memo, n)-> n + memo , 10 console.log result
$ coffee reduce.coffee 16
reduceRight
reduceRightは、reduceがリストを前から処理するのに対して、後ろから処理します。
_ = require 'underscore' list = [[0, 1], [2, 3], [4, 5]] result = _.reduceRight list, (memo, n)-> memo.concat(n) , [] console.log result
$ coffee reduceRight.coffee [ 4, 5, 2, 3, 0, 1 ]
concatは、2つの配列を結合するJavaScriptの関数です。この例では、最初に n が [4, 5] となり、memo が初期値の空の配列 [] で結合されます。次に n は [2, 3]で、memoは [4, 5] になりますので、結果は [[4, 5], [2 ,3]] となります。
関連ページ
関連ページ
0 件のコメント:
コメントを投稿