数组排序未正确排序

时间:2012-11-22 02:44:33

标签: ruby arrays

我在排序数组时遇到问题。我的预期结果是:

@list = [
  ["2 1/8\"", "23 13/32\"", "stile", "2"],
  ["2 1/8\"", "11 5/32\"", "rail", "6"],
  ["2 1/8\"", "7 13/32\"", "stile", "4"]
]

这只是一个例子,因为数组是动态的,数据总是在变化,但唯一不变的是,大多数(如果不是全部)单个数字测量结果最终都会结束。

这是我正在使用的代码:

@list = @list.sort {|a,b| b[1]<=>a[1]}    

这是代码的实际输出。

@list
# => [
#   ["2 1/8\"", "7 13/32\"", "stile", "2"],
#   ["2 1/8\"", "23 13/32\"", "rail", "6"],
#   ["2 1/8\"", "11 5/32\"", "stile", "4"]
# ] 

任何想法为什么?

1 个答案:

答案 0 :(得分:1)

如果目标是按每个数组的第二个值的第一个数值排序(7,23,11),那么在排序中将字符串转换为整数可能是一个解决方案:

@list = @list.sort {|a,b| b[1].to_i <=> a[1].to_i }

您还可以使用sort!

缩短时间
@list.sort! {|a,b| b[1].to_i <=> a[1].to_i }