どうも、ちょげ(@chogetarou)です。
配列(array)の要素で条件を満たすものを削除する方法を紹介します。
方法

配列(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 }
コメント