Rubyで配列の要素を削除する:delete, delete_at, shift, slice!

Rubyで配列の要素を削除するいくつかの方法を紹介します。

要素の削除

配列の要素を削除する場合はdelete()を使用します。

配列.delete(削除する要素)

引数に渡した要素と一致するものをすべて配列から削除します。

a = [1, 2, 2, 3, 3, 3]
a.delete(2)
print a # [1, 3, 3, 3]

指定位置の要素を削除

指定位置の要素を削除する場合はdelete_at()を使用します。

配列.delete_at(削除位置)

引数には削除したい要素の位置を指定します。

a = ["a", "b", "c", "d", "e"]
a.delete_at(3)
print a # ["a", "b", "d", "e"]

先頭の要素を削除

配列の先頭から要素を削除する場合はshift()を使用します。

配列.shift(削除する要素の数)

引数には削除する要素の数を指定します。引数を省略した場合は先頭の要素が1つだけ削除されます。

a1 = [1, 2, 3, 4, 5]
a1.shift()
print a1 # [2, 3, 4, 5]

a2 = [1, 2, 3, 4, 5]
a2.shift(2)
print a2 # [3, 4, 5]

指定範囲の要素を削除する

配列から指定範囲の要素を削除する場合はslice!()を使用します。

配列.slice!(削除開始位置, 削除する長さ)

第1引数に削除の開始位置、第2引数に開始位置からいくつ削除するかを指定します。

a = ["a", "b", "c", "d", "e"]
a.slice!(1, 3)
print a # ["a", "e"]

slice!()には引数に範囲を指定することもできます。

配列.slice!(削除範囲)

引数に範囲を指定するとその範囲分の要素を削除します。

a = ["a", "b", "c", "d", "e"]
a.slice!(1..3)
print a # ["a", "e"]

slice!()ではなく、slice()を使った場合は削除された配列を戻り値として返し、元の配列を変更されないので注意してください。


イベント

2017/12/05(火)
Design Thinking Square