作者: rubikitch
日時: 2007/2/25(17:53)
From: "T.Watanabe" <wtnabe@...>
Subject: [TSruby:240] Re: 多重配列の SORT について
Date: Sun, 25 Feb 2007 13:37:22 +0900

>   arr.sort { |a, b|
>     a[0].to_i <=> b[0].to_i
>   }
> 
>   こんな感じでしょうか。ちゃんと動くかどうか試してないですけど、この書き
> 方は慣れておくとかなり便利ですよ。

動きます。今ならsort_byがおすすめです。

array = [["12", 5, 6],["4",2,3],["01",8,9]]
array.sort                      # => [["01", 8, 9], ["12", 5, 6], ["4", 2, 3]]

array = [["12", 5, 6],["4",2,3],[1,8,9]]
# 型が違うのでエラー
array.sort rescue $!                     # => #<ArgumentError: comparison of Array with Array failed>

# 最初の要素を数値化したものをキーに
array.sort { |a, b| a[0].to_i <=> b[0].to_i} # => [[1, 8, 9], ["4", 2, 3], ["12", 5, 6]]
# こっちがエレガント
# xはarrayの要素(配列内配列)
array.sort_by{|x| x[0].to_i}                    # => [[1, 8, 9], ["4", 2, 3], ["12", 5, 6]]

--
rubikitch
http://www.rubyist.net/~rubikitch/