如果所有元素都为空,我如何从数组中删除元素?

时间:2017-01-12 21:33:40

标签: arrays ruby pruning

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

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

如果所有数组都是nil或空的,我将如何消除上面列表中的所有数组?将此功能应用到上述之后,我希望结果是

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

这样的事情:

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

甚至更短:

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