How to recursively remove all keys with empty values from (YAML) hash?

前端 未结 6 1940
没有蜡笔的小新
没有蜡笔的小新 2021-01-04 22:21

I have been trying to get rid of all hash keys in my YAML file that have empty (blank) values or empty hashes as values.

This earlier post helped me to get it almost

6条回答
  •  情话喂你
    2021-01-04 22:41

    Here's a more generic method:

    class Hash
      def deep_reject(&blk)
        self.dup.deep_reject!(&blk)
      end
    
      def deep_reject!(&blk)
        self.each do |k, v|
          v.deep_reject!(&blk)  if v.is_a?(Hash)
          self.delete(k)  if blk.call(k, v)
        end
      end
    end
    
    { a: 1, b: nil, c: { d: nil, e: '' } }.deep_reject! { |k, v| v.blank? }
    ==> { a: 1 }
    

自定义标题
段落格式
字体
字号
代码语言
提交回复
热议问题