【问题标题】:How do I eliminate elements from my array if all their elements are empty?如果所有元素都是空的,如何从数组中删除元素?
【发布时间】:2017-01-12 21:33:40
【问题描述】:

我使用的是 Ruby 2.4。我有一个数组数组,大致是这样的

[[2, 3, 4], ["", "", ""], ["a", "b", nil], [nil, "", nil], [151, "", "abcdef"]]

如果上面列表中的所有元素都是 nil 或空,我将如何消除上面列表中的所有数组?在将这个函数应用到上面之后,我希望结果是

[[2, 3, 4], ["a", "b", nil], [151, "", "abcdef"]]

【问题讨论】:

    标签: arrays ruby pruning


    【解决方案1】:

    使用rejectall 的类似操作:

    arr.reject { |ar| ar.all? { |e| e.to_s.empty? } }      
     #=> [[2, 3, 4], ["a", "b", nil], [151, "", "abcdef"]]
    

    这里的关键是nil.to_s.empty? #=> true

    【讨论】:

      【解决方案2】:

      类似这样的:

      array.select { |sub_array| sub_array.any? { |element| element.present? } }
      

      甚至更短:

      array.select { |sub_array| sub_array.any?(&:present?) }
      

      【讨论】:

      • 确实如此。但是由于 OP 在最后几天问了几个 Rails 问题,我认为她正在使用 Rails。
      猜你喜欢
      • 2017-06-29
      • 1970-01-01
      • 2011-08-18
      • 2019-11-28
      • 1970-01-01
      • 2019-10-02
      • 2019-11-20
      • 2016-12-08
      • 2023-03-10
      相关资源
      最近更新 更多