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/