I have an array:
scores = [
1,
2,
3,
"",
4
]
And I want to remove all blank values. But when I run this:
puts scores.reject(&:empty?)
I get an error:
undefined method 'empty' for 1:Fixnum
How can I remove values that are not integers from my array in a one step process? I am using Ruby 1.9.3.
It is as simple as:
scores.grep(Integer)
Note that if you plan to map the values, you can do that in a block after:
scores.grep(Integer){|x| x+1 }
Bonus if you want to do the same thing, but you numbers are strings:
scores.grep(/\d+/){|x|x.to_i}
If you want to remove blank values, you should use blank?
:
scores.reject(&:blank?)
#=> [1, 2, 3, 4]
""
, " "
, false
, nil
, []
, and {}
are blank.
scores.select{|e| e.is_a? Integer}
scores = [1, 2, 3, "", 4, nil]
scores.reject{|s| s.to_s == ''}
scores.select{|score| score.is_a? Fixnum}
or, as Fixnum inherits from Integer, you can also go for
scores.select{|score| score.is_a? Integer)
This Worked for me
scores.reject!{|x| x.to_s.empty?}