从Ruby中的数组末尾删除nil项

时间:2012-11-05 21:38:40

标签: ruby

给出如下数组:

[1, 2, nil, nil, 3, nil, 4, 5, 6, nil, nil, nil]

id喜欢从数组末尾删除nil。一些丑陋的循环并不难解决,但我希望有一种Ruby方法可以做到这一点。

Result: [1, 2, nil, nil, 3, nil, 4, 5, 6]

5 个答案:

答案 0 :(得分:19)

这个怎么样:

a.pop until a.last

答案 1 :(得分:7)

不确定为什么你会想要介于两者之间,但我离题了!

array = [1, 2, nil, nil, 3, nil, 4, 5, 6, nil, nil, nil]
array.reverse.drop_while {|i| i == nil}.reverse

答案 2 :(得分:3)

foo = [1, 2, nil, nil, 3, nil, 4, 5, 6, nil, nil, nil]
foo.reverse.drop_while(&:nil?).reverse
# [1, 2, nil, nil, 3, nil, 4, 5, 6] 

答案 3 :(得分:2)

这是给你的单行:)

a =  [1, 2, nil, nil, 3, nil, 4, 5, 6, nil, nil, nil] 

a[0..a.rindex{|el| !el.nil?}] # => [1, 2, nil, nil, 3, nil, 4, 5, 6]

答案 4 :(得分:0)

while(!(a = ar.pop)){}; ar.push a 

还是一个丑陋的循环,但可能不那么难看?