1 ページに長いリストで表示される ~100 個の製品のリストがあります。各製品は 1 つのカテゴリに属します。私は約 5 つのカテゴリを持っています。すべての製品には、category_id があります。
カテゴリのすべての最初の製品に「.first」クラスを追加し、カテゴリのすべての最後の製品に「.last」クラスを追加したいと考えています。
パフォーマンスが重要です。私は自分でいくつかの解決策を考え出しましたが、それらは非常に貧弱に書かれており、あまりにも面倒でした。
サンプルデータ:
products = {
id: 1, category_id: 1;
id: 2, category_id: 1;
id: 3, category_id: 1;
id: 4, category_id: 2;
id: 5, category_id: 2;
id: 6, category_id: 2;
id: 7, category_id: 3;
id: 8, category_id: 3;
...
}
私が探している結果:
<ul>
<li class='first' id='1'></li>
<li id='2'></li>
<li class='last' id='3'></li>
<li class='first' id='4'></li>
<li id='5'></li>
<li class='last' id='6'></li>
<li class='first' id='7'></li>
<li id='8'></li>
...
</ul>
編集:助けてくれてありがとう@niemand!私は groupBy を使用しましたが、これは私がこれまでに持っているものです。これは、パフォーマンスに関してこれを行う良い方法ですか?
window.firsts = []
window.lasts = []
@grouped = _.groupBy(@collection.toJSON(), 'category_id')
_.each @grouped, (group) ->
window.firsts.push new App.Models.Piece(_.first(group)).get('id')
window.lasts.push new App.Models.Piece(_.last(group)).get('id')
このようにして、各モデル ビューをレンダリングして正しいクラスを適用するときに、window.firsts または window.lasts に現在のモデルの ID が含まれているかどうかを確認できます。これについてもっと効率的な方法があれば、私は知りたいです!