我遇到了一个遍历哈希表的函数问题。哈希表可能包含哈希数组。我想让这个方法寻找一个id,然后只返回所找到的嵌套哈希表。
它似乎可以正常遍历,但是却返回传入的原始值。
它似乎可以正常遍历,但是却返回传入的原始值。
require 'rubygems'
require 'ruby-debug'
def find_by_id(node, find_this="")
if node.is_a?(Hash)
node.each do |k,v|
if v.is_a?(Array)
v.each do |elm|
if elm["_id"] == find_this && !find_this.empty?
return elm # THIS IS WHAT I WANT!
else
find_by_id(elm, find_this)
end
end
end
end
end
end
x = {"name" => "first", "_id"=>'4c96a9a56f831b0eb9000005', "items"=>["name" => "second", "_id"=>'4c96a9af6f831b0eb9000009', "others"=>[{"name" => "third", "_id"=>'4c96a9af6f831b0eb9000007'}, {"name" => "fourth", "_id"=>'4c96a9af6f831b0eb9000008'}] ] }
find_by_id(x, '4c96a9af6f831b0eb9000008')
return elm
确实被执行了。 - Dexeach
运算符。从这个运算符内部调用的最后一个运算符没有从原函数中返回其值。 - P Shvednil
,这对我来说可以正常工作。 - sepp2kdfs
是指深度优先搜索,对吗? - John McCarthy