Comment faire pour supprimer les clés de hachage dont la valeur de hachage est vide?
Je suis en utilisant Ruby on Rails 3.2.13 et je voudrais supprimer les clés de hachage qui hash valeur est vide. C'est, si j'ai la suite de hachage
{ :a => 0, :b => 1, :c => true, :d => "", :e => " ", :f => nil }
alors la résultante de hachage doit être (remarque: 0
et true
ne sont pas considérées comme vides)
{ :a => 0, :b => 1, :c => true }
Comment puis-je faire cela?
Voulez-vous garder
:g => []
et h => {}
?OriginalL'auteur user502052 | 2013-10-02
Vous devez vous connecter pour publier un commentaire.
Si à l'aide de Rails, vous pouvez essayer
ou en cas de juste Ruby
value.to_s.strip.empty?
lit un peu mieux que== ''
, de l'OMI. Aussi, vous n'avez pas besoin de Rails d'avoirblank?
, juste ActiveSupport.si la valeur est une valeur de hachage qui est vide? ou encore imbriqués de hachage est vide?
OriginalL'auteur
Il y a un certain nombre de moyens pour accomplir cette tâche commune
rejeter
C'est celui que j'utilise le plus souvent pour le nettoyage de hachages comme son court, propre, et assez souple pour soutenir tout conditionnelle et n'est pas muter l'objet d'origine. Voici une bon article sur les avantages de l'immuabilité en ruby.
Remarque: Le trait de soulignement dans l'exemple ci-dessus est utilisé pour indiquer que nous voulons pour décompresser le tuple passé pour le proc, mais nous ne sommes pas à l'aide de la première valeur (key).
rejeter!
Toutefois, si vous voulez la mutation de l'objet d'origine:
sélectionnez
À l'inverse, vous utilisez select qui retourne uniquement les valeurs qui renvoient true lors de l'évaluation
sélectionner!
...et la mutation de la version
compact
Enfin, lorsque vous seulement besoin pour supprimer les clés qui ont
nil
valeurs...compact!
Vous avez pris le modèle en ce moment, mais c'est la version qui modifie le hachage d'origine!
OriginalL'auteur
À l'égard de techvineet de la solution, notez les points suivants lorsque la valeur == [].
OriginalL'auteur