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