我有这样的嵌套数组:
['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/