14

私は @friend_comparisons という名前の配列を持っており、これには多数のユーザー オブジェクトが取り込まれています。次に、次を使用して配列を並べ替えます。

@friend_comparisons.sort! { |a,b| b.completions.where(:list_id => @list.id).first.counter <=> a.completions.where(:list_id => @list.id).first.counter }

これは、各ユーザーに関連付けられた特定のカウンターで配列をソートしています (その詳細は質問にとって重要ではありません)。

特定の数 (5 としましょう) より大きいカウンターを持つ配列内のユーザー オブジェクトの数を調べたいと考えています。どうすればいいですか?

これが私が現在問題を解決している方法です:

@friends_rank = 1
for friend in @friend_comparisons do
  if friend.completions.where(:list_id => @list.id).first.counter > @user_restaurants.count
    @friends_rank = @friends_rank + 1
  end
end
4

2 に答える 2

15

Array#select で作業が完了します。

ドキュメント: http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-select

あなたは次のようなことをするかもしれません:

number_of_users = @friend_comparisons.select{|friend| friend.counter >= 5 }.size
于 2012-05-30T21:58:18.787 に答える