给出如下数组:
[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]
答案 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
还是一个丑陋的循环,但可能不那么难看?