Ruby:从散列哈希中删除特定键的所有实例

前端之家收集整理的这篇文章主要介绍了Ruby:从散列哈希中删除特定键的所有实例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我喜欢哈希
h = {1 => {"inner" => 45},2 => {"inner" => 46},"inner" => 47}

如何删除包含“内部”键的每一对?
您可以看到一些“内部”对直接出现在h中,而其他对出现在h中

请注意,我只想删除“内部”对,所以如果我在上面的哈希上调用我的批量删除方法,我应该得到

h = {1 => {},2 => {}}

由于这些对没有键==“内在”

解决方法

def f x 
  x.inject({}) do |m,(k,v)|
    v = f v if v.is_a? Hash  # note,arbitrarily recursive
    m[k] = v unless k == 'inner'
    m
  end
end

p f h

更新:略有改进……

def f x
  x.is_a?(Hash) ? x.inject({}) do |m,v)|
    m[k] = f v unless k == 'inner'
    m
  end : x
end
原文链接:https://www.f2er.com/ruby/269419.html

猜你在找的Ruby相关文章