0

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

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

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

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

2 回答 2

1

像这样使用rejectand all

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

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

于 2017-01-12T21:40:21.320 回答
1

像这样的东西:

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

甚至更短:

array.select { |sub_array| sub_array.any?(&:present?) }
于 2017-01-12T21:56:16.447 回答