Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

Ruby辞典

  1. トップページ
  2. Ruby辞典
  3. 配列.insert / delete / delete_at / compact

配列.insert / delete / delete_at / compact

配列の任意の位置に要素を追加・削除したり、『nil』を取り除いたりするメソッドです。

構文
# 指定した位置に要素を挿入します。
配列.insert(インデックス, 要素, ...)

# 指定した値の要素をすべて削除します。
配列.delete(値)
配列.delete(値) { 見つからなかった場合の戻り値 }

# 指定したインデックスの要素を削除します。
配列.delete_at(インデックス)

# nil 要素を取り除いた新しい配列を返します。
配列.compact

# nil 要素を直接取り除きます(破壊的)。
配列.compact!
メソッド一覧
メソッド概要
insert(idx, elem, ...)指定したインデックスの位置に要素を挿入します。負のインデックスを指定した場合は末尾からの位置になります。
delete(val)指定した値に一致するすべての要素を削除し、削除した値を返します。見つからない場合は『nil』を返します。
delete_at(idx)指定したインデックスの要素を削除し、その要素を返します。
compact配列から『nil』を除いた新しい配列を返します。元の配列は変更されません。
compact!元の配列から直接『nil』を除去します。変更があれば配列自身を、なければ『nil』を返します。
サンプルコード
色 = ["赤", "青", "黄"]

# insert でインデックス1の位置に挿入します。
色.insert(1, "緑")
puts 色.inspect  # ["赤", "緑", "青", "黄"]

# 複数の要素を同時に挿入できます。
色.insert(2, "紫", "橙")
puts 色.inspect  # ["赤", "緑", "紫", "橙", "青", "黄"]

# delete で値を指定して削除します。
色.delete("橙")
puts 色.inspect  # ["赤", "緑", "紫", "青", "黄"]

# 見つからない場合のデフォルト値をブロックで指定します。
結果 = 色.delete("白") { "見つかりませんでした" }
puts 結果  # 見つかりませんでした

# delete_at でインデックスを指定して削除します。
削除された = 色.delete_at(0)
puts 削除された   # 赤
puts 色.inspect   # ["緑", "紫", "青", "黄"]

# compact で nil を除去します。
データ = [1, nil, 2, nil, 3, nil]
puts データ.compact.inspect  # [1, 2, 3]
puts データ.inspect           # [1, nil, 2, nil, 3, nil](元は変わらない)

# compact! で元の配列を直接変更します。
データ.compact!
puts データ.inspect  # [1, 2, 3]
概要

『insert』は配列の中間に要素を追加する場合に使います。末尾への追加なら『push』や『<<』の方が高速です。『delete』は値を指定して削除し、『delete_at』はインデックスを指定して削除します。

『delete』は一致するすべての要素を削除するため、同じ値が複数ある場合はすべて削除されます。特定の位置の1要素だけを削除したい場合は必ず『delete_at』を使用してください。

『compact』は配列処理の結果に生じた不要な『nil』をまとめて除去する際に便利です。重複要素の削除には『uniq』を、末尾・先頭の操作には『push / pop / shift / unshift』を使用してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。