来自嵌套哈希的路径数组

时间:2018-04-05 14:25:37

标签: ruby ruby-hash

我有一个哈希

my_hash = {"key1"=> {"key2"=> {"key3"=> "value"}}, "key4"=>  "value"}

我想只返回键的完整路径作为数组。所有连接都像这样

[key1, key1key2, key1key2key3, key4].

有关如何执行此操作的任何建议。感谢

2 个答案:

答案 0 :(得分:0)

我已经能够使用此iteraptor建议的user帮助程序解决此问题。感谢

我使用了'aplanar'这个特征,即

hash.aplanar.keys

返回具有值的所有键的路径。就像我想要的那样。

答案 1 :(得分:0)

以下是递归方法,逐步修改内部哈希的键。例如,

{"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"]