检查我的数组中的空元素 - Ruby

mar*_*ion 0 ruby

我的数组中有一个元素,当我打印出该特定元素的值时,我得到一个空值.

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),但我不知道如何获得这些元素.

我错过了什么?

谢谢.

Jes*_*ehz 7

您没有看到任何打印因为您忘记使用#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?在所有元素上删除那些空的元素