排序范围值

Kan*_*nna 8 ruby sorting

我想对表示数值范围的字符串数组进行排序,如下所示:

b = ["0-5", "100-250", "5-25", "50-100", "250-500", "25-50"]
Run Code Online (Sandbox Code Playgroud)

使用sort我得到的方法:

b.sort 
# => ["0-5", "100-250", "25-50", "250-500", "5-25", "50-100"]
Run Code Online (Sandbox Code Playgroud)

我希望它像这样:

["0-5, "5-25", "25-50", "50-100", "100-250", "250-500"]
Run Code Online (Sandbox Code Playgroud)

Uri*_*ssi 15

尝试:

b.sort_by { |r| r.split('-').map(&:to_i) }
# => ["0-5", "5-25", "25-50", "50-100", "100-250", "250-500"] 
Run Code Online (Sandbox Code Playgroud)

此解决方案将每个item("0-5")拆分为两个items(["0", "5"]),并将它们转换为整数([0, 5]).现在按数组排序(首先是第一项,第二项是打破平局).


Che*_*ian 5

b.sort_by { |a| a.split('-').first.to_i }

=> ["0-5", "5-25", "25-50", "50-100", "100-250", "250-500"]
Run Code Online (Sandbox Code Playgroud)


Car*_*and 5

b.sort_by(&:to_i)
  #=> ["0-5", "5-25", "25-50", "50-100", "100-250", "250-500"]
Run Code Online (Sandbox Code Playgroud)

因为

"25-50".to_i #=> 25
Run Code Online (Sandbox Code Playgroud)