Skip to content

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

instance method

Hash#select

hash.select {|key, value| ... } → new_hash
hash.select → new_enumerator

Hash#filter is an alias for Hash#select.

Returns a new Hash object whose entries are those for which the block returns a truthy value:

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

Returns a new Enumerator if no block given:

Example
h = {foo: 0, bar: 1, baz: 2}
e = h.select # => #<Enumerator: {:foo=>0, :bar=>1, :baz=>2}:select>
e.each {|key, value| value < 2 } # => {:foo=>0, :bar=>1}
See also #select! #replace #reject! #shift also in 4.1 · 4.0 · 3.4 · 3.3 · 3.1 · 3.0