Backbone.jsでCollectionの最小値を取得する
Backbone.jsでCollectionの最小値(一番小さいIDのModelなど)を取得する方法です。
this.collection.at(0) や this.collection.first()を使っても取れるかもしれませんが、comparatorを使ってソート順を指定している場合、ソートされた結果の先頭のModelを取ってきてしまいます。ある値の一番小さいModelを取得したい場合、Underscore.jsの拡張メソッドminを利用します。
(coffeescript)
first_model = @collection.min (model)-> model.id
(javascript)
var first_model = this.collection.min(function(model) { return model.id; }
これで、IDの一番小さなModelを取得することができます。Collectionにfirst_modelというメソッドを定義しておいてもいいかもしれません。もちろん、minの引数の返り値を変えればID以外の最小値を指定することも可能です。maxを利用して同じように実装すれば最大値のModelを取得することもできます。