我有一个哈希
my_hash = {"key1"=> {"key2"=> {"key3"=> "value"}}, "key4"=> "value"}
我只想将键的完整路径作为数组返回。都是这样串联的
[key1, key1key2, key1key2key3, key4].
有关如何执行此操作的任何建议。谢谢
下面是一种逐步修改内部哈希键的递归方法。例如,
{"key2"=> {"key3"=> "value"}}
改为
{"key1key2"=> {"key3"=> "value"}}
之后
{"key3"=> "value"}
改为
{"key1key2key3"=> "value"}
这使我可以简单地累积这些哈希的键。
def recurse(h)
h.map do |k,v|
next k unless v.is_a?(Hash)
key, val = v.flatten
[k, recurse("#{k}#{key}"=>val)]
end.flatten
end
recurse my_hash
#=> ["key1", "key1key2", "key1key2key3", "key4"]