KonifarPod

Backbone.jsでCollectionの最小値を取得する

   

Pocket

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を取得することもできます。

Pocket

 - Develop ,