このようなもの?
names = ['Alice', 'Bob', 'Carol']
points = [22, 11, 33]
ジップ
Array#zipメソッドが必要になる場合があります。
pairs = names.zip(points)
#=> [["Alice", 22], ["Bob", 11], ["Carol", 33]]
選別
配列フィールドで並べ替えるには、ペアの2つのフィールドを比較します。
名前順:
pairs.sort{|x,y| x[0] <=> y[0] }
#=> [["Alice", 22], ["Bob", 11], ["Carol", 33]]
スコアで並べ替え:
pairs.sort{|x,y| x[1] <=> y[1] }
#=> [["Bob", 11], ["Alice", 22], ["Carol", 33]]
並び替え
並べ替えるもう1つの方法は、比較ブロックの代わりに#sort_byメソッドです(Niklas Bに感謝します)。
名前順:
pairs.sort_by(&:first)
#=> [["Alice", 22], ["Bob", 11], ["Carol", 33]]
スコアで並べ替え:
pairs.sort_by(&:last)
#=> [["Bob", 11], ["Alice", 22], ["Carol", 33]]
選択する
ハイスコアより上のプレーヤーだけを選択するには:
pairs.select{|x| x[1] >20 }
#=> [["Alice", 22], ["Carol", 33]]
解凍
解凍するには:
pairs.map(&:first)
#=> ["Alice", "Bob", "Carol"]
pairs.map(&:last)
#=> [22, 11, 33]
これらのアイデアはあなたを正しい方向に向けるかもしれません。