-1

我有一个哈希

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

我只想将键的完整路径作为数组返回。都是这样串联的

[key1, key1key2, key1key2key3, key4].

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

4

2 回答 2

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"]
于 2018-04-05T18:45:20.867 回答
0

我已经能够使用该用户建议的迭代器助手解决此问题。谢谢

我使用了“平面”功能,即

hash.aplanar.keys

返回所有具有值的键的路径。正如我所愿。

于 2018-04-05T15:19:57.673 回答