Ruby: Get all keys in a hash (including sub keys)

前端 未结 10 984
清歌不尽
清歌不尽 2021-01-31 19:02

let\'s have this hash:

hash = {\"a\" => 1, \"b\" => {\"c\" => 3}}
hash.get_all_keys 
=> [\"a\", \"b\", \"c\"]

how can i get all key

10条回答
  •  不要未来只要你来
    2021-01-31 19:24

    This will give you an array of all the keys for any level of nesting.

    def get_em(h)
      h.each_with_object([]) do |(k,v),keys|      
        keys << k
        keys.concat(get_em(v)) if v.is_a? Hash
      end
    end
    
    hash = {"a" => 1, "b" => {"c" => {"d" => 3}}}
    get_em(hash) #  => ["a", "b", "c", "d"]
    

提交回复
热议问题