【问题标题】:How to remove array elements where element's fields are NULL如何删除元素字段为NULL的数组元素
【发布时间】:2021-12-11 12:46:04
【问题描述】:
array = [[1555,100],[nil,95],[1774,nil],[1889,255]]

从数组中删除第二个和第三个元素的最佳方法是什么,因为它们有 NULL 字段?

预期输出:

array = [[1555,100],[1889,255]]

【问题讨论】:

  • 你能粘贴上面例子的预期输出吗?
  • @Ragnar921 :你的意思是nil,而不是NULL。 Ruby 没有NULL

标签: arrays ruby


【解决方案1】:
arr = [[1555,100],[nil,95],[1774,nil],[1889,255]]
arr.reject { |a,b| (a && b).nil? }
  #=> [[1555, 100], [1889, 255]]

【讨论】:

    【解决方案2】:

    还有一个选择:

    array.reject { |a| a.any?(&:nil?) }
    

    这与 Cary Swoveland 的答案非常相似,但可以处理任何长度的数组,并且还会删除 [false, nil]

    【讨论】:

      【解决方案3】:

      使用.compact 从数组数组中删除nil 元素

      array.map(&:compact)
      
      # array = [[1555,100], [95], [1774], [1889, 255]]
      

      编辑

      使用.reject! 删除包含nil 元素的子数组。

      array.reject! { |e| e.any? nil }
      
      # array = [[1555,100], [1889,255]]
      

      【讨论】:

      • 如果包含NULL,我希望整个数组元素消失
      • 我已经编辑了答案。
      猜你喜欢
      • 2019-06-03
      • 2021-05-04
      • 2021-01-28
      • 2012-03-29
      • 2020-10-21
      • 2022-11-12
      • 2012-03-27
      • 1970-01-01
      • 2015-01-04
      相关资源
      最近更新 更多