【发布时间】:2022-01-14 16:33:26
【问题描述】:
我有以下 Ruby 哈希...
{
"Aura"=>{"eyes"=>403, "moon"=>134, "burst"=>75, "psych"=>249},
"Power: Verdure"=>{"max"=>4, "min"=>1},
"Power: Creature"=>{"max"=>3, "min"=>1},
"Iris"=>{"ice"=>208, "sky"=>220, "aqua"=>206, "deep"=>215, "dusk"=>229, "hide"=>213}
}
我想删除哈希具有max 和min 的任何元素。最大值/最小值无关紧要。只是它们存在的事实。
意思是上面的哈希会变成...
{
"Aura"=>{"eyes"=>403, "moon"=>134, "burst"=>75, "psych"=>249},
"Iris"=>{"ice"=>208, "sky"=>220, "aqua"=>206, "deep"=>215, "dusk"=>229, "hide"=>213}
}
如何删除这些元素?
【问题讨论】:
-
Hash#delete_if或Hash#reject与Hash#key?结合使用应该可以帮助您实现目标 -
试试
h.reject { |_,v| (['max', 'min'] - v.keys).empty? }。见Hash#reject。要修改散列,请使用Hash#delete_if。请注意,delete_if会返回新的哈希值,即使它没有改变,而Hash#reject! 会返回nil,如果没有改变的话。