Skip to content

End of Life Ruby 3.1 has reached end of life and gets no more fixes. Switch to Ruby 4.0 →

instance method

Hash#delete_if

hash.delete_if {|key, value| ... } → self
hash.delete_if → new_enumerator

If a block given, calls the block with each key-value pair; deletes each entry for which the block returns a truthy value; returns self:

Example
h = {foo: 0, bar: 1, baz: 2}
h.delete_if {|key, value| value > 0 } # => {:foo=>0}

If no block given, returns a new Enumerator:

Example
h = {foo: 0, bar: 1, baz: 2}
e = h.delete_if # => #<Enumerator: {:foo=>0, :bar=>1, :baz=>2}:delete_if>
e.each { |key, value| value > 0 } # => {:foo=>0}
See also #delete #dig #default_proc= #each also in 4.1 · 4.0 · 3.4 · 3.3 · 3.2 · 3.0