0

配列に要素があり、その特定の要素の値を出力すると、空の値が取得されます。

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が、それらの要素を取得する方法すらわかりません。

私は何が欠けていますか?

ありがとう。

4

2 に答える 2

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の呼び出しを拒否しますか?すべての要素で、空の要素を削除します

于 2012-05-10T11:11:29.603 に答える
0

ああ、このように繰り返してください

       my_listing.each_with_index do |i,index|
          if i.blank?
             puts index.inspect
          end
       end

空またはnilになる配列のインデックスを提供します。

于 2012-05-10T10:55:12.543 に答える