gist

2012年6月11日月曜日

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

Underscore.js 5回目、Collection編のラストです。


groupBy

_.groupBy(list, iterator)

groupByは、与えられたリストをグルーピングします。グルーピングの条件はイテレータで指定します。イテレータにはinvoke同様、関数を文字列で指定することも可能です。

_ = require 'underscore'

ipaddrs = [
 "192.168.0.10"
 "192.168.0.20"
 "192.168.2.1"
 "192.168.0.122"
 "192.168.3.6"
 "192.168.4.8"
 "192.168.3.22"
 "192.168.1.100"
 "192.168.4.9"
 "192.168.5.232"
]

result = _.groupBy ipaddrs, (ip)->
 ip.split('.')[2]

console.log result
実行結果
$ coffee groupBy.coffee 
{ '0': [ '192.168.0.10', '192.168.0.20', '192.168.0.122' ],
  '1': [ '192.168.1.100' ],
  '2': [ '192.168.2.1' ],
  '3': [ '192.168.3.6', '192.168.3.22' ],
  '4': [ '192.168.4.8', '192.168.4.9' ],
  '5': [ '192.168.5.232' ] }

sortedIndex

_.sortedIndex(list, value, [iterator])

sortedIndexは、指定した値がリストのどのインデックスに入るべきかを返します。

_ = require 'underscore'

index = _.sortedIndex [-10,10,20,40,50], 45

console.log index

実行結果
$ coffee sortedIndex.coffee 
4

shuffle

_.shuffle(list)

shuffleは、与えられたリストの要素をシャッフルします。シャッフルのアルゴリズムには、有名なFisher–Yates shuffle を採用しています。

_ = require 'underscore'

console.log _.shuffle [1,2,3,4,5,6]

console.log _.shuffle [1,2,3,4,5,6]

console.log _.shuffle [1,2,3,4,5,6]
実行結果
$ coffee shuffle.coffee 
[ 2, 1, 4, 5, 3, 6 ]
[ 3, 5, 4, 2, 1, 6 ]
[ 5, 4, 2, 1, 6, 3 ]

toArray

_.toArray(list)

toArrayは、与えられた引数を配列にして返します。argumentsオブジェクトを変換するのによく使われるそうで。

_ = require 'underscore'

console.log (()->
 _.toArray arguments
)(1, 2, 3, "hello", true, {name:"hoge"})

実行結果
$ coffee toArray.coffee 
[ 1, 2, 3, 'hello', true, { name: 'hoge' } ]

size

_.size(list)

sizeは、配列の大きさを返します。

_ = require 'underscore'

console.log _.size ["hello",2,false,4,{name:"hoge"}]
実行結果
$ coffee size.coffee 
5

関連ページ

0 件のコメント: