【发布时间】:2015-05-12 08:43:30
【问题描述】:
有没有一种简单的方法来遍历嵌套散列中的每个键。我有一个很大的 json,我只想要某些键的值,无论它们处于什么级别。他们的父母是谁也无关紧要。寻找一种方法来直线迭代每个键并返回等于特定字符串的键值。
【问题讨论】:
-
请提供一些输入和所需的输出
有没有一种简单的方法来遍历嵌套散列中的每个键。我有一个很大的 json,我只想要某些键的值,无论它们处于什么级别。他们的父母是谁也无关紧要。寻找一种方法来直线迭代每个键并返回等于特定字符串的键值。
【问题讨论】:
module HashNestedGet
refine Hash do
def nested_get(key)
return fetch(key) if has_key?(key)
each do |subkey, subval|
if Hash === subval
result = subval.nested_get(key)
return result if result
end
end
nil
end
end
end
a = { b: 1, c: { d: { e: 2 } } }
using HashNestedGet
require 'pp'
pp a.nested_get(:b)
# => 1
pp a.nested_get(:e)
# => 2
pp a.nested_get(:d)
# => nil
(作为改进发布,所以它在irb 中不起作用;如果需要,很容易变成一个普通的函数)
【讨论】: