Tatehitoの技術メモ

ソフトウェアエンジニアです。いろいろ書きます。

【Ruby】配列の奇数番目と偶数番目の要素を分ける方法

ary = ["A", "B", "C", "D", "E"]
ary.each_slice(2).map { |a, b| [a, b] }.transpose
# => [ [ "A", "C", "E" ],  [ "B", "D", nil ] ]

each_slicetransposeを使って、奇数番目の要素と偶数番目の要素を分ける。

ary.each_slice(2).map.to_a.transpose

本当はこう書きたかったけど、こうするとtranspose前の状態が

[ [ "A", "B" ], [ "C", "D" ], [ "E" ] ]

となってしまい、数が合わずtransposeでエラーになってしまう。(要素が偶数個ならうまくいく)