1. ホーム
  2. ruby

配列の反復処理中にArray#deleteを使用するにはどうすればよいですか?

2023-11-05 14:15:41

質問

配列があり、それを反復処理し、いくつかの要素を削除したいと思います。これは動作しません。

a = [1, 2, 3, 4, 5]
a.each do |x|
  next if x < 3
  a.delete x
  # do something with x
end
a #=> [1, 2, 4]

私は a になるように [1, 2] . これを回避するにはどうしたらよいでしょうか?

どのように解決するのですか?

a.delete_if { |x| x >= 3 }

メソッドのドキュメントを参照 ここで

更新しました。

ブロック内でxを処理することができる。

a.delete_if do |element|
  if element >= 3
    do_something_with(element)
    true # Make sure the if statement returns true, so it gets marked for deletion
  end
end