Determine if a value exists in an array of hashes

RubyArrays

Ruby Problem Overview


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

Ruby Solutions


Solution 1 - Ruby

array_of_hashes.any? {|h| h[:a] == 11}

Solution 2 - Ruby

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]

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionChristopherView Question on Stackoverflow
Solution 1 - RubyMagnarView Answer on Stackoverflow
Solution 2 - RubyDigitalRossView Answer on Stackoverflow