我想知道是否可以从哈希中收集许多属性。
当前使用ruby 2.6.3
类似的东西
hash = { name: "Foo", email: "Bar", useless: nil }
other_hash = hash[:name, :email]
输出应该是另一个哈希,但没有无用的键/值
答案 0 :(得分:7)
您可以使用Ruby内置的Hash#slice
:
hash = { name: "Foo", email: "Bar", useless: nil }
p hash.slice(:name, :email)
# {:name=>"Foo", :email=>"Bar"}
如果使用Rails,则可以使用Hash#except
,它只接收您要忽略的密钥:
p hash.except(:useless)
# {:name=>"Foo", :email=>"Bar"}
答案 1 :(得分:3)
如果无用键具有nil
值,则也可以使用Hash#compact:
h = { name: "Foo", email: "Bar", useless: nil }
h.compact #=> {:name=>"Foo", :email=>"Bar"}