Rubyで条件に一致する要素を削除する方法をまとめました。
Rubyで配列から条件に一致する要素を削除する際はdelete_if関数が便利です。
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで Software Design plus
- 作者:伊藤 淳一
- 発売日: 2017/11/25
- メディア: Kindle版
Array. each_with_index内で条件分岐をして要素を削除する
まずはオーソドックスな記述方法です。
Array. each_with_indexのブロック内で条件分岐を行って条件に一致したインデックスの要素を削除しています。
numbers = [1, 2, 3, 4] numbers.each_with_index do |n, index| # nが奇数の場合は配列から削除 if n.odd? numbers.delete_at(index) end end p numbers # => [2, 4]
Array.delete_ifを使用して削除する
次にArray.delete_ifを使用して要素を削除します。
ブロック内の条件に一致する要素を削除しています。
numbers = [1, 2, 3, 4] # 配列から値が奇数の要素を削除する numbers.delete_if do |n| n.odd? end p numbers # => [2, 4]
こちらの書き方の方がすっきりしていてわかりやすいですね。
以上、配列から条件に一致する要素を削除する方法でした。