对数组中的非整数排序

时间:2019-06-12 19:50:30

标签: ruby-on-rails ruby

所以,这是一个数组:

["2,0", "2,5", "3,2", "1,4", "1,8", "1,1", "2,7", "3,7", "0,8", "0,9",
 "30,0", "0,5", "2,6", "3,0", "5,3", "9,0", "0,7", "12,8", "16,2", "19,2", "23,0", 
 "4,4", "6,4", "7,0", "7,7", "0,4", "1,2", "1,6", "11,1", "13,6", "16,9", "20,5", 
 "32,0", "5,4", "8,5", "0,36", "0,48", "0,55", "0,56", "0,66", "0,75", "0,76", 
 "0,95", "1,15", "1,65", "1,7", "2,1", "24,5", "3,5", "4,1", "4,8", "5,8", "2,2", 
 "46,0", "7,5", "0,6", "10,6", "11,4", "3,3", "3,8", "4,7", "40,6", "5,1", "5,5", 
 "5,9", "6,0", "6,7", "8,1", "9,2", "9,4"]

我需要将其升序排列,例如:

["0,36", "0.48", "0,5"..."1.7"..."40.6"] 

我尝试使用.sort_by(&:to_i)并得到:

["0,8", "0,9", "0,5", "0,7", "0,4", "0,36", "0,48", "0,55", "0,56", "0,66", "0,75", 
 "0,76", "0,95", "0,6", "1,4", "1,8", "1,1", "1,2", "1,6", "1,15", "1,65", "1,7", 
 "2,0", "2,5", "2,7", "2,6", "2,1", "2,2", "3,2", "3,7", "3,0", "3,5", "3,3", "3,8", 
 "4,4", "4,1", "4,8", "4,7", "5,3", "5,4", "5,8", "5,1", "5,5", "5,9", "6,4", "6,0", 
 "6,7", "7,0", "7,7", "7,5", "8,5", "8,1", "9,0", "9,2", "9,4", "10,6", "11,1", 
 "11,4", "12,8", "13,6", "16,2", "16,9", "19,2", "20,5", "23,0", "24,5", "30,0", 
 "32,0", "40,6", "46,0"]

看起来更好,但仍然随机出现一些数字。

1 个答案:

答案 0 :(得分:7)

我假设您要按浮点值排序。为此,请先将逗号替换为句点并强制转换为float:

numbers.sort_by { |s| s.tr(',', '.').to_f }