0

私は気がかりなケースがあります:次のように、関連付けられた重みで文字列のリストを並べ替えたいです:

@array = [{0 => "string"}, {0 => "my string"}, {2 => "my very long string which I want to match"}]

ソートの結果は次のようになります。

{2 => "my very long string which I want to match"}
{0 => "my string"}
{0 => "string"}

最初の要素は非常に長い文字列です。これは、pound/string.lengthの差が他の要素よりも優れているためです。

重量でグループ化し、その後で文字列で並べ替えようとしましたが、機能しません。比率も計算しようとしましたが、それでも正しい順序のリストが得られません。

ご回答ありがとうございます。

4

1 に答える 1

2
@array.sort_by do |h| 
  pound, string = h.first
  -pound.to_f / string.length
end
#=> [{2=>"my very long string which I want to match"}, {0=>"my string"}, {0=>"string"}]
于 2012-11-30T14:49:05.653 に答える