【问题标题】:How to remove empty hash from array如何从数组中删除空哈希
【发布时间】:2020-01-20 21:50:34
【问题描述】:

如何从数组中删除空哈希?

[{}, {}, :one, :two]

.compact 似乎不起作用。

【问题讨论】:

  • [{}, {}, :one, :two] - [{}] 是答案中未提及的另一种方式。

标签: ruby-on-rails ruby ruby-on-rails-5


【解决方案1】:

如何从数组中删除空哈希?

使用reject,通过检查元素是否为哈希且为空来拒绝可枚举中的元素({}):

p [{}, {}, :one, :two, [], [], '', nil].reject { |e| e == {} }
# [:one, :two, [], [], "", nil]

【讨论】:

  • +1 我打算发布推荐使用select,直到我看到你的答案。我觉得 rejectselect 在块中有否定条件时更具可读性。
  • 最好的答案,因为它可以处理扔给它的任何东西:)
  • @CarySwoveland 看起来确实更简洁,不是吗?
【解决方案2】:

删除空哈希:

ar = [{}, {}, :one, :two]
ar.delete({})
p ar # => [:one, :two]

【讨论】:

    【解决方案3】:

    试试Array#reject不需要的元素:

    ary = [{}, {}, :one, :two]
    ary.reject! { |h| h.empty? }
    ary
    #=> [:one, :two]
    

    【讨论】:

      猜你喜欢
      • 2014-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2013-10-09
      • 1970-01-01
      • 2011-12-13
      • 1970-01-01
      相关资源
      最近更新 更多