LoginSignup
21
18

More than 5 years have passed since last update.

Ruby | 配列の奇数番目と偶数番目を取り出す方法

Last updated at Posted at 2019-03-07

配列の奇数番目や偶数番目を取り出して新たな配列にする

配列の中から偶数番目または奇数番目の要素を取り出したいときに役に立ったので共有します。
今回は、each_sliceメソッドとmapメソッドを使用してやってみました。

参考記事
each_slice (Enumerable) - Rubyリファレンス
ある配列を任意の要素数の配列に分割したい - Qiita

結論はこんな感じです。

ary = [1,2,3,4,5,6,7,8,9,10]
odd = ary.each_slice(2).map(&:first)
even = ary.each_slice(2).map(&:last)

p odd #=>[1,3,5,7,9]
p even #=>[2,4,6,8,10]

少し分解して考えてみた

結論の書き方だと何をやっているのかイマイチ分かりにくいと思いますので、自分なりに分解してみました。

ある配列を任意の要素数の配列に分割したい - Qiita
each_sliceについては、上の記事が分かりやすく解説していました。

each_slice(数): 数の部分には何分割するかを決める数値を入れる

なので、数の部分を2とすると、配列を2つずつ取り出して、それをさらにmapメソッドで配列に入れている感じです。

ary.each_slice(2).map {|n| n}
#=>[[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]

これを利用して、以下のようにします。

odd = ary.each_slice(2).map {|n| n.first} #[1, 2].firstみたいなことを繰り返している
#=>[1,3,5,7,9]

even = ary.each_slice(2).map {|n| n.last}
#=>[2,4,6,8,10]
  • 取り出した配列nの要素の1番目を取り出すと、奇数番目の配列が完成する。
    つまりfirstメソッドを使用する。
  • 取り出した配列nの要素の2番目を取り出すと、偶数番目の配列が完成する。
    つまりlastメソッドを使用する。

初心者なりに考えたやり方になりますので、他にも色々なやり方がたくさんあると思います。 もしこんなやり方もあるよ!って方がいればぜひ教えていただければと思います。 読んでいただきありがとうございました。
21
18
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
18