私は配列を持っています:
scores = [1, 2, 3, "", 4]
そして、空白の値をすべて削除したいと思います。しかし、これを実行すると:
puts scores.reject(&:empty?)
エラーが発生します:
undefined method `empty' for 1:Fixnum
ワンステッププロセスで配列から整数ではない値を削除するにはどうすればよいですか? Ruby 1.9.3 を使用しています。
空白の値を削除したい場合は、次を使用する必要がありますblank?
: (Rails / ActiveSupport が必要)
scores.reject(&:blank?)
#=> [1, 2, 3, 4]
""
、" "
、false
、nil
、[]
、および{}
は空白です。
次のように簡単です。
scores.grep(Integer)
値をマッピングする予定がある場合は、次のブロックで行うことができます。
scores.grep(Integer){|x| x+1 }
同じことをしたいが、数字が文字列である場合のボーナス:
scores.grep(/\d+/){|x|x.to_i}
これを試して :
scores.select{|e| e.is_a? Integer}
# => [1, 2, 3, 4]
scores = [1, 2, 3, "", 4, nil]
scores.reject{|s| s.to_s == ''}
# => [1, 2, 3, 4]
これは私のために働いた
scores.reject!{|x| x.to_s.empty?}
scores.select{|score| score.is_a? Fixnum}
または、Fixnum は Integer から継承するため、次のオプションを選択することもできます
scores.select{|score| score.is_a? Integer)
...それがより説明的だと思われる場合。
Array と Enumerable は、同じことを行う多くの方法を提供する傾向があります。