[[”2004:09:21:00:00:00”, ”3”, ..],
[”2004:09:21:00:00:00”, ”4”,...],
[”2004:09:22:00:00:00”, ”2”,...], ...
]
のような配列があります。この配列をまず0番目の要素 (”2004:09:22:00:00:00” のような形式の日付)で昇順にソートし、かつ、同日付でソートされた結果を崩さずに、2番目のソートキーとして1番目の要素 (”3”や ”4”のような文字列)で降順にソートするにはどのような式を用いれば良いでしょうか?
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Array
Array - Rubyリファレンスマニュアル
しばらくRubyから遠ざかっていたのと、いまRubyを実行できる環境にいないのであんまり自信ないんで、ポイントはいいです。
こんなのはどうでしょう。
a.sort{|a,b|
v = a[0] <=> b[0]
if(v == 0)
v = a[1] <=> b[1]
end
return v
}
urlはダミーです。
ちょっと考えましたがRuby知らないんで、適当。
Array.sortという関数使えばなんとでもなりそうなので、記述しま。
そういう配列が入ったオブジェクトをoとします
o.sort{ |x,y|
gap = x[0] - y[0] #1つめの要素の比較
if gap == 0
gap = y[1] - x[2] #2つめの要素の比較
end
gap
}
比較部分テキトーですが、こんな感じのノリのコードになるかと。
urlはダミです(ケンシロウ進数)
追記。
要素の比較を文字列として比較しているので、
ちょっとユルい感じもします。ハィ(´・ω・)
最初の要素はDateオブジェクトに変換してから
比較のほうがいいかも?
Dateクラスあるか知らないし、変換タイヘンかもだけど。
残念ながら日付のソートが崩れてしまいます。