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]]