Es gibt eine Reihe von Möglichkeiten, können versuchen, diese gemeinsame Aufgabe
ablehnen
zu erreichen Dies ist die eine, die ich am häufigsten für die Reinigung von Hashes verwende, da sie kurz, sauber und flexibel genug ist Unterstützung für alle bedingten und mutiert nicht das ursprüngliche Objekt. Hier ist ein good article über die Vorteile der Unveränderlichkeit in Rubin.
hash.reject {|_,v| v.blank?}
Hinweis: Der Unterstrich in dem obigen Beispiel verwendet, um anzuzeigen, dass wir das Tupel des proc weitergegeben auspacken wollen, aber wir sind nicht mit dem ersten Wert (key).
ablehnen!
Wenn Sie jedoch das ursprüngliche Objekt mutieren wollen:
hash.reject! {|_,v| v.blank?}
wählen
Im Gegensatz dazu verwenden Sie wählen, welche nur die Werte zurück, die true zurück, wenn
ausgewertet
hash.select {|_,v| v.present? }
wählen!
... und das Mutieren Version
hash.select {|_,v| v.present? }
compact
Schließlich, wenn Sie nur brauchen Schlüssel zu entfernen, die nil
Werte haben ...
hash.compact
kompakt!
Sie haben das Muster inzwischen aufgenommen, aber das ist die Version, die den ursprünglichen Hash ändert!
hash.compact!
Haben Sie behalten möchten ': g => []' und 'h => {}'? –