如何访问散列中的嵌套键

问题描述 投票:2回答:2

我正在将Ruby on Rails与ClosureTree宝石一起使用。我有一个嵌套的哈希:

{
  :a00=>{
    :a10=>{
      :a20=>{}, 
      :a21=>{}
    }, 
    :a11=>{
      :a22=>{
        :a30=>{}, 
        :a31=>{}
      }
    }
  }
}

我想找到任何给定键及其所有“超级键”的值。例如,对于:a30,我想找到其值{}以及嵌套在其中的哈希键:[:a00, :a11, :a22]

我找到了“ Finding Deeply Nested Hash Keys”,它描述了一种满足我的条件的第一部分的方法,即找到密钥的值:]​​>

def deep_find(obj, key)
  return obj[key] if obj.respond_to?(:key?) && obj.key?(key)

  if obj.is_a? Enumerable
    found = nil
    obj.find { |*a| found = deep_find(a.last, key) }

    found
  end
end

但是,我还没有找到找到“超级键”的方法。

我正在将Ruby on Rails与ClosureTree宝石一起使用。我有一个嵌套的哈希:{:a00 => {:a10 => {:a20 => {},:a21 => {}},:a11 => {:a22 => {:a30 => {} .. 。

ruby-on-rails ruby hash
2个回答
2
投票

我会选择这样的东西:


0
投票

代码

© www.soinside.com 2019 - 2024. All rights reserved.