我的数组中有一个元素,当我打印出该特定元素的值时,我得到一个空值。
puts my_listing[2].inspect
[]
当我检查该特定元素是否为空时,使用empty?
返回true:
puts my_listing[2].empty?
true
但是当我循环遍历整个数组时,检查i
是否为空,它找不到该特定元素。
my_listing.each do |i|
if i.empty?
puts i
end
end
i
(在这种情况下为2
)永远不会打印到屏幕上。
为什么?
基本上,我试图摆脱数组中所有空的元素(在这种情况下是索引2
的元素),但我不知道如何获得这些元素。
我错过了什么?
感谢。
答案 0 :(得分:7)
您没有看到任何打印因为您忘记使用#inspect 你也可以写一下:
my_listing.each do |i|
i.empty? and p i
end
要删除空元素,您可以执行以下操作:
my_array = [[1],[2],[],[4]]
p my_array.reject(&:empty?) # => [[1], [2], [4]]
拒绝来电#empty?在所有元素上删除那些空的
答案 1 :(得分:0)
哦,请像这样迭代
my_listing.each_with_index do |i,index|
if i.blank?
puts index.inspect
end
end
它给你的数组索引为空或零。