Method: Hash#hash_select

Defined in:
lib/quality_extensions/hash/hash_select.rb

#hash_select(&block) ⇒ Object Also known as: hash_find_all, delete_unless

call-seq:

hash.hash_select {| key, value | block }  -> hash

Hash#reject returns a hash. One would intuitively expect Hash#select to also return a hash. However, it doesn’t: instead, returns “a new array consisting of [key,value] pairs for which the block returns true”.

Hash#hash_select behaves how Hash#select (arguably) should behave: Deletes every key-value pair from a copy of hash except those for which block evaluates to true.



20
21
22
23
24
# File 'lib/quality_extensions/hash/hash_select.rb', line 20

def hash_select(&block)
  reject {|k, v|
    !yield k, v
  }
end