Removing all empty elements from a hash / YAML?

前端 未结 20 1644
礼貌的吻别
礼貌的吻别 2020-12-07 15:35

How would I go about removing all empty elements (empty list items) from a nested Hash or YAML file?

20条回答
  •  执念已碎
    2020-12-07 15:45

    Deep deletion nil values from a hash.

      # returns new instance of hash with deleted nil values
      def self.deep_remove_nil_values(hash)
        hash.each_with_object({}) do |(k, v), new_hash|
          new_hash[k] = deep_remove_nil_values(v) if v.is_a?(Hash)
          new_hash[k] = v unless v.nil?
        end
      end
    
      # rewrite current hash
      def self.deep_remove_nil_values!(hash)
        hash.each do |k, v|
          deep_remove_nil_values(v) if v.is_a?(Hash)
          hash.delete(k) if v.nil?
        end
      end
    

提交回复
热议问题