配列から要素を取り除く(delete,difference)

配列から指定した要素を取り除く方法です。指定した値と等しい要素を削除したり、指定した配列に含まれる要素を等しい要素を取り除くことができます。ここでは Ruby で配列から要素を取り除く方法について解説します。

(2021 年 06 月 30 日公開 / 2022 年 10 月 28 日更新)

指定した値と等しい要素を取り除く(delete)

Array クラスで用意されている delete メソッドを使うと、配列に格納されている要素の中で指定した値と等しい要素を取り除きます。

delete(val)

delete メソッドは配列に含まれる要素の中で引数に指定した値と等しい要素を対象の配列からすべて取り除きます。

具体的には次のように記述します。

ary = [1, 2, 3, 5, 4, 3]
ary.delete(3)

この場合、配列 ary が 3 と等しい要素を取り除き [1, 2, 5, 4] になります。

等しいかどうかの判定は内部的に == メソッドを使って判定されています。

指定した配列の要素と同じ要素を取り除いた新しい配列を返す(difference)

Array クラスで用意されている difference メソッドを使うと、引数に指定した配列の要素と同じ要素を取り除いた新しい配列を返します。

difference(*other_arrays)

difference メソッドは引数に指定した配列に含まれる要素と同じ要素を対象の配列から取り除いた新しい配列を返します。

具体的には次のように記述します。

ary1 = [1, 2, 3, 5, 4, 3]
ary2 = [2, 3]
newary = ary1.difference(ary2)

この場合、配列 ary1 の要素の中で配列 ary2 の要素を取り除いた [1, 5, 4] の要素を持つ新しい配列を取得します。

等しいかどうかの判定は内部的に Object クラスの eql? メソッドを使って判定されています。

サンプルコード

実際に試してみます。

# encoding: UTF-8

ary = [1, 2, 3, 5, 4, 3]

ary.delete(3)
p ary

ary1 = [1, 2, 3, 5, 4, 3]
ary2 = [3, 4]
newary = ary1.difference(ary2)

p newary

実行結果は次のようになります。

指定した値と同じ要素を取り除く

-- --

Ruby で配列から指定した値と等しい要素を取り除く方法について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。