I want to sort this array by two different conditionals.
First I want to sort the array by type: A type can be either (1,2,3,4) and I want to sort them in this order 4
This should do it:
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] }
output:
#
#
#
#
#
#