【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]