给定一个数组,如:
[1, 2, nil, nil, 3, nil, 4, 5, 6, nil, nil, nil]
id 喜欢nil
从数组末尾删除 's。用一些丑陋的循环来解决并不难,但我希望有一种 Ruby 方法可以做到这一点。
Result: [1, 2, nil, nil, 3, nil, 4, 5, 6]
给定一个数组,如:
[1, 2, nil, nil, 3, nil, 4, 5, 6, nil, nil, nil]
id 喜欢nil
从数组末尾删除 's。用一些丑陋的循环来解决并不难,但我希望有一种 Ruby 方法可以做到这一点。
Result: [1, 2, nil, nil, 3, nil, 4, 5, 6]
这个怎么样:
a.pop until a.last
不知道为什么你会想要 nil 介于两者之间,但我离题了!
array = [1, 2, nil, nil, 3, nil, 4, 5, 6, nil, nil, nil]
array.reverse.drop_while {|i| i == nil}.reverse
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]
这是给你的单线:)
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]
while(!(a = ar.pop)){}; ar.push a
仍然是一个丑陋的循环,但也许不那么丑陋?