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

标签 ruby

我有一个像这样的散列

h = {1 => {"inner" => 45}, 2 => {"inner" => 46}, "inner" => 47}

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

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

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

因为这些对没有键 == "inner"

最佳答案

真的,这就是拒绝!用于:

def f! x
  x.reject!{|k,v| 'inner' == k} if x.is_a? Hash
  x.each{|k,v| f! x[k]}
end

关于Ruby:从散列的散列中删除特定键的所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10676608/

相关文章:

ruby-on-rails - 检查当前的设计操作和 View

ruby,rails gem 安装错误 - 错误:执行 gem 时......(编码::UndefinedConversionError)

arrays - 由于另一个数组,Ruby 空数组在迭代中更改值

ruby - 根据内部元素的数量对二维数组进行排序

ruby-on-rails - Rails,类中未定义的方法但存在方法

ruby - Allow vs Stub,有什么区别?

arrays - Ruby:通过将数组映射到数组来构建哈希

javascript - rails 中图像的 fancybox 不起作用

ruby - sinatra 的 Activerecord 或 sinatra-activerecord

ruby-on-rails - rails 4 : How to translate devise view?