我找不到从散列中删除不在给定键名数组中的键的方法.我读过我可以使用except或者slice,但是如何向他们提供我想要保留的关键名称列表?所以,例如,如果我有这个哈希:
entry = {:title=>"casablanca", :media=>"dvd", :localeLanguage=>"en", :imdb=>"", :freebase=>"", :originalTitle => 'casablanca', :season=> '1', :episode => '3'}
Run Code Online (Sandbox Code Playgroud)
我只是想保持,比如说:title,:media和:localeLanguage,我怎么能只保留其主要的名字我指定的值?
Ben*_*ier 21
在Rails 4+中,使用slice:
entry = {:title=>"casablanca", :media=>"dvd", :localeLanguage=>"en", :imdb=>"", :freebase=>"", :originalTitle => 'casablanca', :season=> '1', :episode => '3'}
keepers = [:title, :media, :localeLanguage]
entry.slice(*keepers)
# => {:title=>"casablanca", :media=>"dvd", :localeLanguage=>"en"}
Run Code Online (Sandbox Code Playgroud)
使用切片!就地修改你的哈希.
Mar*_*mas 20
我用keep_if(要求1.9.2).
keepers = [:title, :media, :localeLanguage]
entry.keep_if {|k,_| keepers.include? k }
#=> {:title=>"casablanca", :media=>"dvd", :localeLanguage=>"en"}
Run Code Online (Sandbox Code Playgroud)