如果所有元素都为空,如何从我的数组中删除元素?
How do I eliminate elements from my array if all their elements are empty?
我正在使用 Ruby 2.4。我有一个数组数组,看起来大致像这样
[[2, 3, 4], ["", "", ""], ["a", "b", nil], [nil, "", nil], [151, "", "abcdef"]]
如果上面列表中的所有元素都为 nil 或为空,我将如何消除它们的所有数组?将此功能应用于上述内容后,我希望结果为
[[2, 3, 4], ["a", "b", nil], [151, "", "abcdef"]]
像这样使用 reject
和 all
:
arr.reject { |ar| ar.all? { |e| e.to_s.empty? } }
#=> [[2, 3, 4], ["a", "b", nil], [151, "", "abcdef"]]
这里的关键是nil.to_s.empty? #=> true
.
像这样:
array.select { |sub_array| sub_array.any? { |element| element.present? } }
或更短:
array.select { |sub_array| sub_array.any?(&:present?) }
我正在使用 Ruby 2.4。我有一个数组数组,看起来大致像这样
[[2, 3, 4], ["", "", ""], ["a", "b", nil], [nil, "", nil], [151, "", "abcdef"]]
如果上面列表中的所有元素都为 nil 或为空,我将如何消除它们的所有数组?将此功能应用于上述内容后,我希望结果为
[[2, 3, 4], ["a", "b", nil], [151, "", "abcdef"]]
像这样使用 reject
和 all
:
arr.reject { |ar| ar.all? { |e| e.to_s.empty? } }
#=> [[2, 3, 4], ["a", "b", nil], [151, "", "abcdef"]]
这里的关键是nil.to_s.empty? #=> true
.
像这样:
array.select { |sub_array| sub_array.any? { |element| element.present? } }
或更短:
array.select { |sub_array| sub_array.any?(&:present?) }