1

私は2次元配列を持っています:

arr = [
  ["John", 17],
  ["John", 17],
  ["Abe", 14],
  ["Kobian", 18],
  ["Hony", 16],
  ["Mony", 19],
  ["John", 18],
  ["Hari", 15],
]

同じ名前が繰り返されないように、一意の結果をアルファベット順に並べ替えて表示したいと考えています。名前が異なり、年齢が同じ場合は、重複していない年齢の低いものを選択します。

私はたくさん働きましたが、それを解決する方法が見つかりませんでした...答えを事前にありがとう...

4

1 に答える 1

4
arr.group_by {|e| e[0] }.map {|k,v| v.min}.sort

=> [["Abe", 14], ["Hari", 15], ["Hony", 16], ["John", 17], ["Kobian", 18], ["Mony", 19]]

異なる年齢を維持するには:

require 'set'
Set.new(arr).sort

=> [["Abe", 14], ["Hari", 15], ["Hony", 16], ["John", 17], ["John", 18], ["Kobian", 18], ["Mony", 19]]
于 2012-07-24T08:05:17.013 に答える