ページ

2012年7月2日月曜日

CoffeeScriptで学ぶ Underscore.js 15(Chain編)

CoffeeScriptで学ぶUnderscore.js(Chain編)。今回で15回目、ようやく最終回です。


chain

_.chain(object)

chainは、underscoreのメソッドを次々と連結して実行できる便利なメソッドです。

_ = require 'underscore'

users = [
 {name : 'curly', age : 25}, 
 {name : 'moe', age : 21}, 
 {name : 'larry', age : 23}
]

youngest = 
 _.chain(users)
 .sortBy (user)->
  user.age
 .map (user)->
  user.name + ' is ' + user.age
 .first()
 .value()

console.log youngest
実行結果
$ coffee chain.coffee 
moe is 21

_.chain(users)でchainに配列を与えています。次にsortByでage順に並べます。次のmapで「◯◯ is 年齢」の出力を作成します。firstで最初の行を取得し、最後にvalueで値にしています。

Underscore.jsでは、

_.map [1,2,3], (n)->
 n * 2

は、以下のようにも記述できます。

_([1,2,3]).map (n)->
 n * 2

ですので、上記のchainの部分は以下のように分解できます。

sorted = _(users).sortBy (user)->
 user.age
mapped = _(sorted).map (user)->
 user.name + ' is ' + user.age
first = _(mapped).first()
value = _(first).value()

value

_(obj).value()

valueは、objを展開します。chainの最後に負荷することで値として展開できます。

_ = require 'underscore'

console.log _([3,2,6]).value()
実行結果
$ coffee value.coffee 
[ 3, 2, 6 ]

Underscore.jsは、JavaScriptを強力にサポートするパッケージです。是非とも使いこなしてみましょう。


関連ページ