How to return all even numbers inside an array inside of a hash?

Viewed 50

I've been given the following data structure:

users = {
  "Jonathan" => {
    :twitter => "tronathan",
    :favorite_numbers => [12, 42, 75],
  },
  "Erik" => {
    :twitter => "sferik",
    :favorite_numbers => [8, 12, 24],
  },
  "Anil" => {
    :twitter => "bridgpal",
    :favorite_numbers => [12, 14, 85],
  },
}

I need to return all of Anils favourite numbers that are even. This is what I have so far:

users["Anil"][:favorite_numbers].each do |evennum|
    if evennum.even?
        puts evennum
    end
end
1 Answers

You could do something like this

anil_favorite_even_numbers = users['Anil'][:favorite_numbers].select(&:even?)

This takes for granted that a user Anil exists and the favourite_numbers inside it too and that's an array. Otherwise we need a little bit of extra work.

Related