我有下面的数组

cities = ["Kathmandu", "Pokhara", "", "Dharan", "Butwal"]

我想从数组中删除空白元素,并希望得到以下结果:

cities = ["Kathmandu", "Pokhara", "Dharan", "Butwal"]

有没有像compact这样不需要循环的方法?


当前回答

在我的项目中,我使用delete:

cities.delete("")

其他回答

更新在拒绝和拒绝!

注意:我遇到了这个问题,并在irb控制台上用ruby-3.0.1检查了这些方法。我也检查了ruby文档,但没有提到这一点。我不确定从哪个ruby版本 变化就在那里。非常感谢来自社区的任何帮助。

在ruby-3.0.1中,我们可以使用reject或reject!

cities = ["Kathmandu", "Pokhara", "", "Dharan", "Butwal"]
cities.reject{ |e| e.empty? }
=> ["Kathmandu", "Pokhara", "Dharan", "Butwal"]

或简写

cities.reject(&:empty?)
=> ["Kathmandu", "Pokhara", "Dharan", "Butwal"]

无论我们是否有一个空值,两者都会返回[]?

使用严格的join & split更新

cities = ["Kathmandu", "Pokhara", "", "Dharan", "Butwal"]
cities.join(' ').split

结果将是:

["Kathmandu", "Pokhara", "Dharan", "Butwal"]

注意:这对有空间的城市不起作用

使用拒绝:

>> cities = ["Kathmandu", "Pokhara", "", "Dharan", "Butwal"].reject{ |e| e.empty? }
=> ["Kathmandu", "Pokhara", "Dharan", "Butwal"]

已经有很多答案了,但如果你在Rails世界里,这里有另一种方法:

 cities = ["Kathmandu", "Pokhara", "", "Dharan", "Butwal"].select &:present?

最短路径城市。select(&:present?)