Find key/value pairs deep inside a hash containing an arbitrary number of nested hashes and arrays

前端 未结 9 1068
天涯浪人
天涯浪人 2020-12-02 20:12

A web service is returning a hash that contains an unknown number of nested hashes, some of which contain an array, which in turn contains an unknown number of nested hashes

9条回答
  •  南笙
    南笙 (楼主)
    2020-12-02 20:45

    I use the following code

    def search_hash(hash, key)
      return hash[key] if hash.assoc(key)
      hash.delete_if{|key, value| value.class != Hash}
      new_hash = Hash.new
      hash.each_value {|values| new_hash.merge!(values)}
      unless new_hash.empty?
        search_hash(new_hash, key)
      end
    end
    

提交回复
热议问题