ヨージとプログラミング

プログラミング勉強の記録

【Ruby】配列から要素を抜き出すpop, shift

Paizaをやってて調べたことシリーズ

popはケツから、shiftはアタマから

配列に入っている要素を使いたい場合、インデックスを指定して利用することが多いと思います(例:array[1]とか)
しかし、その場合だと要素を参照しただけで、元の配列自体から要素を抜き出した(取り去った)わけではありません。そして、そういう処理をしたい時はたまに訪れます。

array = [1, 2, 3, 4]
number = array[2]

p number   # 3
p array    # [1, 2, 3, 4] そのまま

pythonでは最後尾の要素を取り出すのにpopがありました、rubyにもあるかなと思い探すと、あ、り、ま、し、た。

# popの使い方
array = [1, 2, 3, 4]
pop_number = array.pop

p pop_number  # 4
p array       # [1, 2, 3]

popの逆バージョンも見つけました。こっちは知りませんでした

# shiftの使い方
array = [1, 2, 3, 4]
pop_number = array.shift

p pop_number  # 1
p array       # [2, 3, 4]

抜き出した値を利用しない場合は他の選択肢もあり

##非破壊的メソッド「Array#reject」
array = [1,2,3]
p arry.reject {|item| item == 2} #=> [1, 3]
p arry #=> [1, 2, 3]

##破壊的メソッド「Array#delete_if」
array = [1,2,3]
p arry.delete_if {|item| item == 2} #=> [1, 3]
p arry #=> [1, 3]