ruby find in nested hash code example
Example 1: find a key in nested hash ruby
def nested_hash_value(obj,key)
if obj.respond_to?(:key?) && obj.key?(key)
obj[key]
elsif obj.respond_to?(:each)
r = nil
obj.find{ |*a| r=nested_hash_value(a.last,key) }
r
end
end
h = { foo:[1,2,[3,4],{a:{bar:42}}] }
p nested_hash_value(h,:bar)
#=> 42
Example 2: ruby create nested hash from array
h = array.reverse.inject(value) { |a, n| { n => a } }