我有一个嵌套的哈希,如下所示,我想找到使用ruby的特定孩子的父级。
例如,我想找到“field3”的父级:123(12345是父级,如果我的符号令人困惑)
[
{
"12345": [
{
"entry_id": 543,
"field1": "value",
"field2": "other value",
"field3": 123
},
{
"entry_id": 544,
"field1": "something",
"field2": "something else",
"field3": 456
}
],
"23456": [
{
"entry_id": 545,
"field1": "new value",
"field2": "other new value",
"field3": 789
},
{
"entry_id": 546,
"field1": "something!",
"field2": "something else!",
"field3": 012
}
]
}
]
我可以迭代哈希并打印我想要的父级,但有更有效的方法吗?
我已经查看了其他一些答案,我发现了这段代码here:
def dfs(obj, &blk)
return enum_for(:dfs, obj) unless blk
yield obj if obj.is_a? Hash
if obj.is_a?(Hash) || obj.is_a?(Array)
obj.each do |*a|
dfs(a.last, &blk)
end
end
end
def find_node_with_value(obj, key, value)
dfs(obj).select do |node|
node[key].respond_to?(:include?) && node[key].include?(value)
end
end
当然,上面的代码只能帮助我找到子节点。如何找到我正在寻找的特定孩子的父母?