Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

sortとブロック(多重配列編)

多重配列も、Hashと同じ手順でソートすることができます。
ただ、配列に同じデータ型を放り込んでいた場合は注意が必要です。
最後の例にあるように、訳の分からない処理もできてしまいます。

>test_array = [ [22, 44, 67],
                     [1, 0x43, 0b111],
                     [98, 8, 3],
                     [0, 0, 0] ]
#=> [[22, 44, 67], [1, 67, 7], [98, 8, 3], [0, 0, 0]]

> test_array.sort{|a,b| a[0] <=> b[0]}
#=> [[0, 0, 0], [1, 67, 7], [22, 44, 67], [98, 8, 3]]

> test_array.sort{|a,b| b[0] <=> a[0]}
#=> [[98, 8, 3], [22, 44, 67], [1, 67, 7], [0, 0, 0]]

> test_array.sort{|a,b| a[1] <=> b[1]}
#=> [[0, 0, 0], [98, 8, 3], [22, 44, 67], [1, 67, 7]]

> test_array.sort{|a,b| b[1] <=> b[2]}
#=> [[0, 0, 0], [98, 8, 3], [1, 67, 7], [22, 44, 67]]