-1

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

@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"]
# ] 

任何想法为什么?

4

1 回答 1

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 }
于 2012-11-22T02:58:41.767 回答