gpt4 book ai didi

ruby-on-rails - RoR/Ruby 从嵌套数组中删除 nil 元素

转载 作者:行者123 更新时间:2023-12-03 21:01:55 25 4
gpt4 key购买 nike

要将数组分成两个相等的部分,我会这样做,

>> a = [1,2,3,4,5]
=> [1, 2, 3, 4, 5]
>> a.in_groups_of( (a.size/2.0).ceil ) if a.size > 0
=> [[1, 2, 3], [4, 5, nil]]

现在我有一个嵌套数组,如果数组的大小是奇数,它包含 nil 元素。如何从嵌套数组中删除 nil 元素?我想做类似的事情,
a.compact

但不幸的是,这不起作用,ruby 只删除第一层的 nil 元素,而不是递归的。 ruby 是否为这个问题提供了任何好的解决方案?

最佳答案

使用 Ruby 1.8.7 及更高版本,您可以执行以下操作:

a.each &:compact!
=> [[1, 2, 3], [4, 5]]

在 Ruby 1.8.6 中,你已经做了很长的路要走:
a.each {|s| s.compact!}

这两个都会修改 a的内容.如果你想返回一个新的数组而保留原来的数组,你可以使用 collect而不是 each :
# 1.8.7+:
a.collect &:compact

# 1.8.6:
a.collect {|s| s.compact}

关于ruby-on-rails - RoR/Ruby 从嵌套数组中删除 nil 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1800685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com