Ci sono un certo numero di modi per eseguire questa operazione comune
rifiutano
Questo è quello che uso più spesso per ripulire gli hash perché è abbastanza corto, pulito e abbastanza flessibile per supportare qualsiasi condizionale e non muta l'oggetto originale. Ecco uno good article sui benefici dell'immutabilità nel rubino.
hash.reject {|_,v| v.blank?}
Nota: La sottolineatura nell'esempio di cui sopra è usato per indicare che vogliamo disfare la tupla passato al proc, ma non stiamo utilizzando il primo valore (chiave).
rifiuto!
Tuttavia, se si vuole mutare l'oggetto originale:
hash.reject! {|_,v| v.blank?}
selezionare
Al contrario, si utilizza selezionare che restituirà solo i valori che restituiscono vero quando valutata
hash.select {|_,v| v.present? }
selezionare!
... e la versione mutando
hash.select {|_,v| v.present? }
compatta
Infine, quando si solo bisogno di rimuovere le chiavi che hanno nil
valori ...
hash.compact
compatto!
Avete già raccolto il pattern, ma questa è la versione che modifica l'hash originale!
hash.compact!
fonte
2017-06-07 04:24:59
Vuoi mantenere ': g => []' e 'h => {}'? –