Entfernen Sie die Schlüssel in der hash nicht in der Reihe
Ich kann nicht einen Weg finden, entfernen Sie Schlüssel aus einem hash, die nicht in einem gegebenen array von Schlüssel-Namen. Ich habe gelesen, dass ich verwenden können except
oder slice
, aber wie kann ich füttern Sie eine Liste der wichtigsten Namen, die ich behalten will? So zum Beispiel, wenn ich schon diese hash:
entry = {:title=>"casablanca", :media=>"dvd", :localeLanguage=>"en", :imdb=>"", :freebase=>"", :originalTitle => 'casablanca', :season=> '1', :episode => '3'}
und ich wollte nur zu halten, sagen, :title
, :media
und :localeLanguage
, wie konnte ich nur jene Werte, deren Namen ich angeben?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde verwenden
keep_if
(erfordert 1.9.2)..keep_if
. Ist das nur Ruby 1.9.x? Ah. Ich sehe, Sie bearbeitet es zu klären. Danke.In Rails 4+, verwenden Sie Scheibe:
Kürzere version (mit demselben Ergebnis):
Verwenden slice! ändern Sie Ihre hash-in-place.
In Ruby 1.9.3:
In Ruby 1.8.7, Hash#select liefert ein array von arrays zu verwenden, so Hash [], um das array in einen hash:
Den Unterschied in der Reihenfolge ist da in der Ruby-1.8.7-Hashes sind ungeordnet.