HAPPY HACKING Oouchi's BLOG

PSE(ポンコツエンジニア)の技術ブログ

【Ruby】配列から条件に一致する要素を削除する

Rubyで条件に一致する要素を削除する方法をまとめました。
Rubyで配列から条件に一致する要素を削除する際はdelete_if関数が便利です。

docs.ruby-lang.org

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]

こちらの書き方の方がすっきりしていてわかりやすいですね。

以上、配列から条件に一致する要素を削除する方法でした。