我在Ruby中具有二维哈希。
h = { "a" => {"v1" => 0, "v2" => 1}, "c" => {"v1" => 2, "v2" => 3} }
我想从哈希中删除这些元素,例如,值1( v1
(为0,所以我的结果是:
{ "c" => {"v1" => 2, "v2" => 3} }
我想通过用delete_if
迭代hash来实现这一目标,但我不确定如何处理嵌套的部分。
是您要寻找的吗?
h.delete_if { |_, v| v['v1'].zero? }
#=> {"c" => {"v1" => 2, "v2" => 3}}
正如@Tomlord所说,当v1
无法定义或等于nil
时,它也可能是变体,在这种情况下,最好使用v['v1'] == 0
您可以在块中使用 Hash#value?
检查嵌套哈希中值等于 0
:
hash.delete_if { |k,v| v.value? 0 } #=> { "c" => { "v1" => 2, "v2" => 3 } }