排序范围值
我想对表示数值范围的字符串数组进行排序,如下所示:
b = ["0-5", "100-250", "5-25", "50-100", "250-500", "25-50"]
使用sort
方法我得到:
b.sort # => ["0-5", "100-250", "25-50", "250-500", "5-25", "50-100"]
我希望它像这样:
["0-5, "5-25", "25-50", "50-100", "100-250", "250-500"]
b.sort_by { |a| a.split('-').first.to_i } => ["0-5", "5-25", "25-50", "50-100", "100-250", "250-500"]
尝试:
b.sort_by { |r| r.split('-').map(&:to_i) } # => ["0-5", "5-25", "25-50", "50-100", "100-250", "250-500"]
该解决方案将每个项目( "0-5"
)分成两个项目( ["0", "5"]
),并将它们转换为整数( [0, 5]
)。 现在按数组排序(首先是第一项,第二项是打破平局)。
b.sort_by(&:to_i) #=> ["0-5", "5-25", "25-50", "50-100", "100-250", "250-500"]
因为
"25-50".to_i #=> 25