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

Ada*_*rer 5 ruby

给定一个数组:

[1, 2, nil, nil, 3, nil, 4, 5, 6, nil, nil, nil]
Run Code Online (Sandbox Code Playgroud)

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

Result: [1, 2, nil, nil, 3, nil, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

pgu*_*rio 20

这个怎么样:

a.pop until a.last
Run Code Online (Sandbox Code Playgroud)

  • 或者更好的是'a.pop而a.last.nil?`以避免丢失所有尾随的错误. (3认同)
  • 不,你不是,它只会流行nils(和falses) (2认同)
  • 偶然发现这个小虫子,如果所有值都为零,你将获得无限循环,需要添加一个大小条件:a.pop而a.last.nil?&& a.size> 0 (2认同)

oma*_*ous 7

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

array = [1, 2, nil, nil, 3, nil, 4, 5, 6, nil, nil, nil]
array.reverse.drop_while {|i| i == nil}.reverse
Run Code Online (Sandbox Code Playgroud)