{ "one"=>"extra", "headers"=>-6ren">
gpt4 book ai didi

ruby - 在获取嵌套的 ruby​​ 哈希层次结构方面需要帮助

转载 作者:数据小太阳 更新时间:2023-10-29 07:49:58 27 4
gpt4 key购买 nike

我有哈希深层嵌套哈希,我希望每个键的层次结构(父到子)作为一个数组。

例如-

 hash = {
"properties"=>{
"one"=>"extra",
"headers"=>{
"type"=>"object",
"type1"=>"object2"
},
"entity"=>{
"type"=>"entype"
},
},
"sec_prop"=>"hmmm"
}

对于这个散列,我想要如下所示的输出,作为每个键的单独数组。

[properties,one]
[properties,headers,type]
[properties,headers,type1]
[properties,entity,type]
[sec_prop]

我已经通过一些递归方法尝试和搜索了很长时间,但它似乎对我不起作用,我们将不胜感激。

这里要注意的重要一点是在同一个散列中有重复的键作为嵌套例如,类型键在标题和实体中重复。这样我就需要适当的层次结构来识别正确的 key

我应该只为那些值不是另一个散列的键获取这个层次结构数组。

它应该是上面给出的格式,但也欢迎任何其他解决方案

谢谢.!

最佳答案

递归救援:

def hashkeys(o, keys = [], result = [])
if o.is_a?(Hash)
o.each do |key, value|
hashkeys(value, keys + [key], result)
end
else
result << keys
end
result
end

这是一种深度优先搜索,它会累积键直到到达叶子(非哈希值)。每次到达叶子时,它都会将累积的键添加到结果中。

pp hashkeys(hash)
# => [["properties", "one"],
# => ["properties", "headers", "type"],
# => ["properties", "headers", "type1"],
# => ["properties", "entity", "type"],
# => ["sec_prop"]]

关于ruby - 在获取嵌套的 ruby​​ 哈希层次结构方面需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22331898/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com