人生が変わるオンラインサロン!
月3万副業収入が得られる!Mサロン!31日間無料体験!Rubyをさらに学びたい方へ
Rubyを理解して頂くために参考書を執筆致しました!
Rubyの配列、イテレータ、ブロックパラメータなどを学びたい方にオススメの本となっています。演習問題をたくさん用意しているので、実践形式で理解しやすい内容となっています。
下記の画像をクリック!!kindleunlimitedの会員であれば無料で見れます!
⇩初心者向け ⇩中級者向け
RubyでChatGPTAPIを使ってブログ作成を自動化しませんか?
Ruby配列の要素削除メソッド
Rubyには配列の要素を削除するためのいくつかのメソッドが用意されています。ここでは、そのうちのいくつかを取り上げ、その使い方と特性について説明します。
例1: deleteメソッド
deleteメソッドは配列から指定した値を削除します。
1 2 3 |
array = [1, 2, 3, 2, 1] array.delete(2) puts array.inspect |
出力結果
[1, 3, 1]

例2: delete_atメソッド
delete_atメソッドは、指定したインデックスの要素を削除します。
1 2 3 |
array = ['a', 'b', 'c', 'd', 'e'] array.delete_at(2) puts array.inspect |
出力結果
["a", "b", "d", "e"]

例3: delete_ifメソッド
delete_ifメソッドはブロックを利用して、ブロックの評価結果が真となる要素を全て削除します。
1 2 3 |
array = [1, 2, 3, 4, 5] array.delete_if { |n| n.even? } puts array.inspect |
出力結果
[1, 3, 5]

例4: reject!メソッド
reject!メソッドもdelete_ifメソッドと同様に、ブロックの評価結果が真となる要素を全て削除します。ただし、要素が一つも削除されなかった場合、delete_ifメソッドは元の配列を返すのに対し、reject!メソッドはnilを返します。
1 2 3 |
array = [1, 2, 3, 4, 5] array.reject! { |n| n > 10 } puts array.inspect |
出力結果
[1, 2, 3, 4, 5]

例5: shiftメソッド
shiftメソッドは配列の先頭から指定した数の要素を削除します。引数を省略した場合、先頭の1要素を削除します。
1 2 3 |
array = [1, 2, 3, 4, 5] array.shift(2) puts array.inspect |
出力結果
[3, 4, 5]

例6: popメソッド
popメソッドは配列の末尾から指定した数の要素を削除します。引数を省略した場合、末尾の1要素を削除します。
1 2 3 |
array = [1, 2, 3, 4, 5] array.pop(2) puts array.inspect |
出力結果
[1, 2, 3]

例7: clearメソッド
clearメソッドは配列の全ての要素を削除します。
1 2 3 |
array = [1, 2, 3, 4, 5] array.clear puts array.inspect |
出力結果
[]

例8: slice!メソッド
slice!メソッドは指定したインデックスの要素を削除し、その要素を返します。インデックスだけでなく範囲を指定することも可能です。
1 2 3 4 |
array = [1, 2, 3, 4, 5] removed = array.slice!(1..3) puts "Removed elements: #{removed.inspect}" puts "Array after removal: #{array.inspect}" |
出力結果
Removed elements: [2, 3, 4] Array after removal: [1, 5]

例9: uniq!メソッド
uniq!メソッドは配列内の重複する要素を削除します。ただし、このメソッドは元の配列を変更するので注意が必要です。
1 2 3 |
array = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4] array.uniq! puts array.inspect |
出力結果
[1, 2, 3, 4]

例10: compact!メソッド
compact!メソッドは配列からnil要素を全て削除します。
1 2 3 |
array = [1, nil, 2, nil, 3] array.compact! puts array.inspect |
出力結果
[1, 2, 3]

ポイント
例11: dropメソッド
dropメソッドは指定した数だけ配列の先頭から要素を削除した新しい配列を返します。ただし、元の配列は変更されません。
1 2 3 4 |
array = [1, 2, 3, 4, 5] new_array = array.drop(2) puts "New array after drop: #{new_array.inspect}" puts "Original array: #{array.inspect}" |
出力結果
New array after drop: [3, 4, 5] Original array: [1, 2, 3, 4, 5]

例12: keep_ifメソッド
keep_ifメソッドはブロックの条件に合う要素だけを残し、それ以外の要素を削除します。
1 2 3 |
array = [1, 2, 3, 4, 5] array.keep_if { |n| n > 3 } puts array.inspect |
出力結果
[4, 5]

例13: delete_ifとreject!の違い
delete_ifメソッドとreject!メソッドはよく似た動作をしますが、異なる点もあります。それは、要素が削除されなかった場合の戻り値です。delete_ifは常に元の配列を返しますが、reject!は要素が削除されなかった場合にnilを返します。
1 2 3 4 |
array = [1, 2, 3, 4, 5] puts "delete_if: #{array.delete_if { |n| n > 10 }.inspect}" array = [1, 2, 3, 4, 5] puts "reject!: #{array.reject! { |n| n > 10 }.inspect}" |
出力結果
delete_if: [1, 2, 3, 4, 5] reject!: nil

例14: rejectメソッド
rejectメソッドはブロックの条件に合わない要素だけを残した新しい配列を返します。元の配列は変更されません。
1 2 3 4 |
array = [1, 2, 3, 4, 5] new_array = array.reject { |n| n > 3 } puts "New array after reject: #{new_array.inspect}" puts "Original array: #{array.inspect}" |
出力結果
New array after reject: [1, 2, 3] Original array: [1, 2, 3, 4, 5]

まとめ
[/st-kaiwa3]
ポイント
最後まで読んで頂き、ありがとうございました。

人生が変わるオンラインサロン!
月3万副業収入が得られる!Mサロン!31日間無料体験!Rubyをさらに学びたい方へ
Rubyを理解して頂くために参考書を執筆致しました!
Rubyの配列、イテレータ、ブロックパラメータなどを学びたい方にオススメの本となっています。演習問題をたくさん用意しているので、実践形式で理解しやすい内容となっています。
下記の画像をクリック!!kindleunlimitedの会員であれば無料で見れます!
⇩初心者向け ⇩中級者向け
RubyでChatGPTAPIを使ってブログ作成を自動化しませんか?