0

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 が含まれているかどうかを確認できます。これについてもっと効率的な方法があれば、私は知りたいです!

4

1 に答える 1