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

配列は動的であり、データは常に変化しているため、これは単なる例ですが、一定していることの1つは、すべてではないにしてもほとんどの1桁の測定値が最初に終了することです。

そして、これが私が使用しているコードです:

@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

目標が各配列の2番目の値(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 に答える