ruby - 嵌套数组删除 nil

标签 ruby arrays null

我有这样的嵌套数组:

['foo', [nil], 'baz', ['bar'], nil, ['zoo']]

如何优雅地删除 nil 但保留空数组?* 我希望看到:

['foo', [], 'baz', ['bar'], ['zoo']]

有高手帮忙吗?
*一次迭代

最佳答案

尝试代码:

array = ['foo', [nil], 'baz', ['bar'], nil, ['zoo']]
array.map! {|v| v.is_a?( Array ) && v.compact || v }.compact
# => ["foo", [], "baz", ["bar"], ["zoo"]] 

或更灵活:

array.map! {|v| v.respond_to?( :compact ) && v.compact || v }.compact
# => ["foo", [], "baz", ["bar"], ["zoo"]] 

或陷阱:

array.map! {|v| v.compact rescue v }.compact
# => ["foo", [], "baz", ["bar"], ["zoo"]] 

关于ruby - 嵌套数组删除 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21253157/

相关文章:

ruby-on-rails - 为什么将 require 语句放在 ruby​​ 文件的末尾?

ruby-on-rails - 我如何使用具有方法 : :post? 的 Capybara click_link

javascript - JavaScript 中的对象数组

c - 指向二维指针数组的指针

wpf - 当 WPF ComboBox 的选择为空时,它可以显示替代文本吗?

ios - 通过函数 prepare for segue 将数据传递给 ViewController 不起作用

mysql - Ruby:使用 set 函数时 mysql 抛出错误

Ruby - 正确处理空对象

ruby - 如何获取散列的每个值的大小

android - fatal error - 空指针异常