How can I use Array#delete while iterating over the array? How can I use Array#delete while iterating over the array? arrays arrays

How can I use Array#delete while iterating over the array?


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

See method documentation here

Update:

You can handle x in the block:

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  endend


You don't have to delete from the array, you can filter it so:

a = [1, 2, 3, 4, 5]b = a.select {|x| x < 3}puts b.inspect # => [1,2]b.each {|i| puts i} # do something to each here


I asked this question not long ago.

Deleting While Iterating in Ruby?

It's not working because Ruby exits the .each loop when attempting to delete something. If you simply want to delete things from the array, delete_if will work, but if you want more control, the solution I have in that thread works, though it's kind of ugly.