【问题标题】:iterate over every key in nested hash [closed]迭代嵌套哈希中的每个键[关闭]
【发布时间】:2015-05-12 08:43:30
【问题描述】:

有没有一种简单的方法来遍历嵌套散列中的每个键。我有一个很大的 json,我只想要某些键的值,无论它们处于什么级别。他们的父母是谁也无关紧要。寻找一种方法来直线迭代每个键并返回等于特定字符串的键值。

【问题讨论】:

  • 请提供一些输入和所需的输出

标签: ruby hash


【解决方案1】:
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 中不起作用;如果需要,很容易变成一个普通的函数)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-18
    • 2013-04-30
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-04
    相关资源
    最近更新 更多