[Ruby]配列(array)の要素を条件で削除するには?

Ruby

どうも、ちょげ(@chogetarou)です。

配列(array)の要素で条件を満たすものを削除する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

配列(array)の要素を条件で削除する方法は、2つあります。

rejectメソッド

1つは、rejectメソッドを使う方法です。

まず、配列からrejectメソッドを呼び出します。

rejectメソッドに引数を1つ持つブロックを渡します。

ブロックで削除する条件を返します。

条件内では、ブロックの引数で配列の要素を取得します。

#arr=対象の配列、condition=削除する条件
result = arr.reject { |x| condition }

上記のrejectメソッドは、呼び出した配列(array)からブロックで返した条件を満たす要素を削除した配列を生成します。

もし、呼び出した配列に影響を与えたいならば、rejectメソッドではなくreject!メソッドを使います。

#呼び出した配列に影響を与える
arr.reject! { |x| condition }

使用例1

numbers = [2, 10, 37, 29, 5, 1, 19]

result = numbers.reject { |x| x < 10 }

p result
出力:
[10, 37, 29, 19]

使用例2

numbers = [2, 10, 37, 29, 5, 1, 19]

numbers.reject! { |x| x < 10 }

p numbers
出力:
[10, 37, 29, 19]

delete_if

もう1つは、delete_ifメソッドを使う方法です。

まず、配列からdelete_ifメソッドを呼び出します。

delete_ifメソッドに引数を1つ持つブロックを渡します。

そして、ブロックで削除する条件を返します。

条件内では、ブロックの引数で配列の要素を取得します。

#arr=対象の配列、condition=削除する条件
arr.delete_if { |x| condition }

上記のdelete_ifメソッドは、呼び出した配列(array)からブロックで返した条件を満たす要素を削除します。

使用例

numbers = [2, 10, 37, 29, 5]

numbers.delete_if { |x| x % 2 == 0 }

p numbers
出力:
[37, 29, 5]

まとめ

配列(array)の要素を条件で削除する方法は、2つあります。

  • rejectメソッドを使う方法
    result = arr.reject { |x| condition }
  • delete_ifメソッドを使う方法
    arr.delete_if { |x| condition }

コメント

タイトルとURLをコピーしました