Ruby remove nil values from array with .reject

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?}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值