rubyの配列について②(要素の削除)
配列の要素を削除する方法を紹介します。
①delete_atメソッドとdeleteメソッドの違い
delete_atメソッドは指定されたインデックスに対応する要素を削除するのに対し、deleteメソッドは指定された値そのものを削除します。
a = [1,2,3,4,5] a. delete_at(2) =>3 #先頭を0として2番目の要素である3が削除 a =>[1,2,4,5] b = [1,2,3,4,5] b .delete(2) =>2 #引数の2そのものが削除 b =>[1,3,4,5]
②slice!メソッドや「-」を使う
a = [1,2,3,4,5] a.slice!(2,3) =>[3,4,5] #インデックス2番目から3つの要素を削除 a =>[1,2] b = [1,2,3,4] b - [1,2] =>[3,4] b => [1,2,3,4]
ちなみにsliceメソッドや「-」は非破壊的メソッドなので、もとの値は変更しません。
他にもブロックを用いるdelete_if(reject!)メソッドや、先頭から指定した数だけ要素を取り除くshiftメソッド、末尾から取り除くpopメソッドがあります(shiftメソッド、popメソッド共に破壊的メソッド)。