像这样的东西?
names = ['Alice', 'Bob', 'Carol']
points = [22, 11, 33]
压缩
您可能需要Array#zip方法:
pairs = names.zip(points)
#=> [["Alice", 22], ["Bob", 11], ["Carol", 33]]
种类
要按数组字段排序,请比较该对的两个字段。
按名称分类:
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]]
排序方式
另一种排序方法是#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]
这些想法可能会为您指明正确的方向。