1

我有一个二维数组:

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 回答