ary = ["A", "B", "C", "D", "E"] ary.each_slice(2).map { |a, b| [a, b] }.transpose # => [ [ "A", "C", "E" ], [ "B", "D", nil ] ]
each_slice
とtranspose
を使って、奇数番目の要素と偶数番目の要素を分ける。
ary.each_slice(2).map.to_a.transpose
本当はこう書きたかったけど、こうするとtranspose
前の状態が
[ [ "A", "B" ], [ "C", "D" ], [ "E" ] ]
となってしまい、数が合わずtranspose
でエラーになってしまう。(要素が偶数個ならうまくいく)