我想检查数组中是否有值或者是否为空。下面的案例有一些空值。
a = [1,2,3,"","","",7]
我的代码如下,但它不起作用。
a.each do |f|
if [f].empty?
puts "array is empty"
else
puts f
end
end
答案 0 :(得分:1)
a = [1,2,3,"","","",7]
puts a.empty?
puts a.any? { |e| e.respond_to?(:empty?) && e.empty? }
数组根本不是空的,因此a.empty?
将返回false。
但是,我们可以检查每个元素,以确定any?
是否为空。我们必须小心检查那些响应empty?
作为方法的内容。如果有的话,这将回答这个问题。否则,我们最终会得到一个NoMethodError
,例如在调用1.empty?
时会发生这种情况。
与您类似的代码:
a.each do |e|
if e.respond_to?(:empty?) && e.empty?
puts "Nothing here."
else
puts e
end
end
答案 1 :(得分:0)
我假设您要检查数组元素是否为blank or nil
。
a = [1,2,3,"","","",7]
a.any?{|i| puts i.to_s.empty? || i.nil?} #=> returns true/false
a.any?{|i| puts (i.to_s.empty? || i.to_s.nil?) ? "Empty":"Not Empty"} #=> prints empty/not empty