如何删除元素字段为 NULL 的数组元素


array = [[1555,100],[nil,95],[1774,nil],[1889,255]]

从数组中删除第二和第三个元素的最好方法是什么,因为它们有NULL字段?

期望输出:

array = [[1555,100],[1889,255]]
arr = [[1555,100],[nil,95],[1774,nil],[1889,255]]
arr.reject { |a,b| (a && b).nil? }
#=> [[1555, 100], [1889, 255]]

还有一个选项:

array.reject { |a| a.any?(&:nil?) }

这与Cary Swoveland的答案非常相似,但可以处理任何长度的数组,并且也可以删除[false, nil]

使用.compact从数组的数组中删除nil元素

array.map(&:compact)
# array = [[1555,100], [95], [1774], [1889, 255]]

编辑

使用.reject!删除包含nil元素的子数组。

array.reject! { |e| e.any? nil }
# array = [[1555,100], [1889,255]]

最新更新