Ruby 嵌套散列的路径数组
我有一份杂烩Ruby 嵌套散列的路径数组,ruby,ruby-hash,Ruby,Ruby Hash,我有一份杂烩 my_hash = {"key1"=> {"key2"=> {"key3"=> "value"}}, "key4"=> "value"} 我只想以数组的形式返回键的完整路径。都是这样连在一起的 [key1, key1key2, key1key2key3, key4]. 关于如何做到这一点的任何建议。谢谢我已经能够通过本文建议的助手解决这个问题。谢谢 我使用了“aplanar”功能,即 hash.aplanar.keys 返回所有具有值的键的路径。正如
my_hash = {"key1"=> {"key2"=> {"key3"=> "value"}}, "key4"=> "value"}
我只想以数组的形式返回键的完整路径。都是这样连在一起的
[key1, key1key2, key1key2key3, key4].
关于如何做到这一点的任何建议。谢谢我已经能够通过本文建议的助手解决这个问题。谢谢 我使用了“aplanar”功能,即
hash.aplanar.keys
返回所有具有值的键的路径。正如我所想。下面是一个递归方法,它逐步修改内部哈希的键。比如说,
{"key2"=> {"key3"=> "value"}}
改为
{"key1key2"=> {"key3"=> "value"}}
{"key1key2key3"=> "value"}
之后
{"key3"=> "value"}
改为
{"key1key2"=> {"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"]
那么你目前在尝试什么呢?@mudasobwa:+1表示酷的宝石名称。方法名称的“meh”:@SergioTulentsev这是monkeypatching
Hash
和Array
。我需要102%确定没有冲突。在任何情况下,在版本1.0
中,它将通过hash.iteraptor_en.map{}
,hash.iteraptor_es.mapa{}
,和hash.iteraptorзru.iteraptorаППаа{}
@SergioTulentsev FWIW,它有Elixir的兄弟姐妹,我总是尽量避免使用方法Array}/code>,只是因为我觉得它很丑。我欢迎大家建议我如何在这里解决这个问题。将map
更改为flat\u map
是不够的。