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

时间:2012-05-10 10:40:46

标签: ruby

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

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

我错过了什么?

感谢。

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

它给你的数组索引为空或零。