Determine if a value exists in an array of hashes
I have the following:
array_of_hashes = [{:a=>10, :b=>20}, {:a=>11, :b=>21}, {:a=>13, :b=>23}]
How would I go about finding if :a=>11
exists in array_of_hashes
array_of_hashes.include?
does not seem to work
Solution 1:
array_of_hashes.any? {|h| h[:a] == 11}
Solution 2:
You did ask for a boolean result in the OQ, but if you really want the hash element itself do:
array_of_hashes.detect { |h| h[:a] == 11 }
If you want the result really fast you could group the original object and then get the result with a single hash lookup:
t = array_of_hashes.group_by { |x| x[:a] }
t[11]