gist

2012年6月10日日曜日

CoffeeScriptで学ぶ Underscore.js 04(Collection編)

前回に引き続き、第4回。Collection編です。


invoke

_.invoke(list, methodName, [*arguments])

invokeは、リストの各要素に対して指定したメソッドを実行します。メソッドは文字列で指定できます。

_ = require 'underscore'

list = [[3,4,2],[6,5,8]]

result = _.invoke list, 'sort'

console.log result

実行結果
$ coffee invoke.coffee 
[ [ 2, 3, 4 ], [ 5, 6, 8 ] ]

指定した名前のメソッドが存在しない場合、例外が投げられます。


pluck

_.pluck(list, propertyName)

pluckは、リストの各要素のプロパティの値を配列で返します。

_ = require 'underscore'

users = [
 {name:'Hoge', email:'hoge@example.com'}
 {name:'Foo', email:'foo@example.com'}
 {name:'Bar', email:'bar@example.com'}
]

console.log _.pluck users, 'name'
実行結果
$ coffee pluck.coffee 
[ 'Hoge', 'Foo', 'Bar' ]

max

_.max(list, [iterator], [context])

maxは、リストの各要素のうち最大の「モノ」を返します。どのプロパティを最大値と比較するかを、イテレータで返します。

_ = require 'underscore'


users = [
 {name:'アーキテクチャ', salary:10000000}
 {name:'プログラマ', salary:800000}
 {name:'社長', salary:25000000}
]

console.log _.max users, (user)->
 user.salary
実行結果
$ coffee max.coffee 
{ name: '社長', salary: 25000000 }

min

_.min(list, [iterator], [context])

minは、maxの逆の機能です。リストの各要素のうち最小の「モノ」を返します。どのプロパティを最小と比較するかを、イテレータで返します。

_ = require 'underscore'


users = [
 {name:'アーキテクチャ', salary:10000000}
 {name:'プログラマ', salary:800000}
 {name:'社長', salary:25000000}
]

console.log _.min users, (user)->
 user.salary
実行結果
$ coffee min.coffee 
{ name: 'プログラマ', salary: 800000 }

sortBy

_.sortBy(list, iterator, [context])

sortByは、リストを条件に従ってソートし、配列を返します。

_ = require 'underscore'

list = [45, 30, 90, 60, 15, 75]

result = _.sortBy list, (item)->
 Math.cos(item/180 * Math.PI)

console.log result

実行結果
$ coffee sortBy.coffee 
[ 90, 75, 60, 45, 30, 15 ]

関連ページ

0 件のコメント: