Simple way to get all values from hash

In the ruby from the box, we can't find all the hash values if it's nested.

I suggest an easy way to find all the values using recursion.

Example hash:

 hash = { a: 2, b: { c: 3, d: 4, e: {f: 5}} } 
 > hash.values => [2, {:c=>3, :d=>4, :e=>{:f=>5}}] 

That's not an option, we need all the values.

 def deep_values(array = [], object:) object.each do |_key, value| if value.is_a?(Hash) deep_values(array, object: value) else array << value end end array end > deep_values(object: hash) => [2, 3, 4, 5] 

If you run the benchmark with this data, we get the following data:

 > puts Benchmark.measure { 100_000.times { hash.values } } => 0.028920 0.002643 0.031563 ( 0.032759) > puts Benchmark.measure { 100_000.times { deep_values(object: hash ) } } => 0.140439 0.003318 0.143757 ( 0.146637) 
Do you have a project for us?Get a free quote