Rubyで配列の要素を削除するいくつかの方法を紹介します。
要素の削除
配列の要素を削除する場合はdelete()を使用します。
1 |
配列.delete(削除する要素) |
引数に渡した要素と一致するものをすべて配列から削除します。
1 2 3 |
a = [1, 2, 2, 3, 3, 3] a.delete(2) print a # [1, 3, 3, 3] |
指定位置の要素を削除
指定位置の要素を削除する場合はdelete_at()を使用します。
1 |
配列.delete_at(削除位置) |
引数には削除したい要素の位置を指定します。
1 2 3 |
a = ["a", "b", "c", "d", "e"] a.delete_at(3) print a # ["a", "b", "d", "e"] |
先頭の要素を削除
配列の先頭から要素を削除する場合はshift()を使用します。
1 |
配列.shift(削除する要素の数) |
引数には削除する要素の数を指定します。引数を省略した場合は先頭の要素が1つだけ削除されます。
1 2 3 4 5 6 7 |
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!()を使用します。
1 |
配列.slice!(削除開始位置, 削除する長さ) |
第1引数に削除の開始位置、第2引数に開始位置からいくつ削除するかを指定します。
1 2 3 |
a = ["a", "b", "c", "d", "e"] a.slice!(1, 3) print a # ["a", "e"] |
slice!()には引数に範囲を指定することもできます。
1 |
配列.slice!(削除範囲) |
引数に範囲を指定するとその範囲分の要素を削除します。
1 2 3 |
a = ["a", "b", "c", "d", "e"] a.slice!(1..3) print a # ["a", "e"] |
slice!()ではなく、slice()を使った場合は削除された配列を戻り値として返し、元の配列を変更されないので注意してください。