-3

文字列の配列があります:

arr = ["2.1", "2.2", "2.2.1", "2.2.10", "2.2.2", "2.10"]

を使用するarr.sortと、結果は次のようになります。

["2.1", "2.10", "2.2", "2.2.1", "2.2.10", "2.2.2"]

私は欲しい:

["2.1", "2.2", "2.2.1", "2.2.2", "2.2.10", "2.10"]

どうすれば正しく並べ替えることができますか?

質問2:

「2.1a」や「0.9b」などの「アルファ」または「ベータ」タイプの文字を並べ替えるにはどうすればよいですか。

質問3:

default_scope :order => ...そのような数値を含む文字列のフィールドタイプを持つアクティブなレコードの配列がある場合、モデルに設定するのは実際ですか?sort_by{|a| a.split('.').map &:to_i }

または

次のようなモデルでメソッドを作成します

def my_sort
  #sorting
end

このため:

Block.all.my_sort
4

1 に答える 1

4
arr.sort_by{|a| a.split('.').map &:to_i }

どちらになりますか:

  1. split各文字列をコンポーネントに変換します。
  2. それぞれを整数(map &:to_i)に変更します。
  3. これらのアレイを相互に比較します。
于 2013-01-16T00:02:31.210 に答える