如何通过两个条件对ruby数组进行排序

我想通过两个不同的条件对这个数组进行排序。

首先,我想按类型对数组进行排序:类型可以是(1,2,3,4),我想按顺序对它们进行排序4 – 1 – 2 – 3。

然后在每个不同的类型中,我想按百分比递减它们。

所以排序的数组看起来像这样:

[ , , , , ,  ]ect 

我怎样才能做到这一点? 目前我只能按类型降序排序。

 array = array.sort_by {|r| r.type } 

这应该这样做:

 require 'ostruct' arr = [ OpenStruct.new(percent: 73, type: 1), OpenStruct.new(percent: 70, type: 4), OpenStruct.new(percent: 60, type: 4), OpenStruct.new(percent: 50, type: 4), OpenStruct.new(percent: 64, type: 1), OpenStruct.new(percent: 74, type: 2) ] puts arr.sort_by { |a| [a.type % 4, -a.percent] } 

输出:

 # # # # # #