4

配列から要素を取得しています:

  - member_results.each do |member|
      = member

次のようなものが返されます。

["John", "Jason", "Andy", "Zee", "Sandy", "Randy", "Grisham"]

配列をアルファベット順に並べ替え、配列から最初の 5 つの一意の要素のみを取得する必要があります。このためのヘルパーを作成する効率的な方法を誰かに勧めてもらえますか?

編集:だから、squiguyによって提供された答えに基づいて、私がしたこと:

member_results.map(&:downcase).sort.uniq.take(5)

それは私の問題のほとんどを解決します。しかし、これらの結果を表示するときは、元の形式に戻す必要があります。

For example the result could be grisHam, aNdy etc.
4

2 に答える 2

4

私のベンチャーは次のようなものになります:

member_results.sort_by(&:downcase).uniq.take(5)

2 つの配列に対してユニオン演算子を使用している場合、uniq.

(a1 | a2).sort.take(5)
于 2013-05-15T23:52:32.303 に答える
1

ソートされた一意の配列を取得するには:

member_results.sort.uniq

最初の 5 つの一意のメンバーをループするには:

member_results.sort.uniq[0..4].each do |m|
 ... 
end

また:

member_results.sort.uniq.first(5).each do |m|
 ... 
end

また:

member_results.sort.uniq.take(5).each do |m|
 ... 
end

(result1 | result2).sort.uniq.first(5)
于 2013-05-15T23:52:24.533 に答える