【问题标题】:Elixir remove nil from listElixir 从列表中删除 nil
【发布时间】:2021-03-05 17:01:47
【问题描述】:

我得到了以下结构:

[nil,
 %{attributes: %{updated_at: ~N[2017-09-21 08:34:11.899360]},
 ...]

我想删除 nils。我怎么做?试过Enum.reduce/3,但没用。

【问题讨论】:

    标签: list elixir


    【解决方案1】:

    Enum.filter/2 来救援:

    Enum.filter(list, & !is_nil(&1))
    

    如果您确定列表中不可能有 false 原子(Elixir 中其他可能的错误值),则过滤器可能会简化为:

    Enum.filter(list, & &1)
    

    另外(感谢@Dogbert)还有一个对应的函数Enum.reject/2“返回enumerable的元素,函数fun返回falsenil。”

    Enum.reject(list, &is_nil/1)
    

    【讨论】:

    • 啊,很好。尝试了类似 List.delete 的东西。过滤,谢谢。解决方案是 data = Enum.filter(data, & !is_nil(&1))
    • False 不包括在内,所以我只需要检查 nil。您的解决方案非常完美。再次感谢 :) 我之前查询了数据库中的最后一次更改。有了一个新的数据库,我得到了一些 nil,不得不删除它们。
    • 还有:Enum.reject(list, &is_nil/1).
    • Enum.reject(list, &is_nil/1) 特别优雅——很好的解决方案
    【解决方案2】:

    这对我有用:

    Enum.filter(s, fn x -> if(x != "") do x end end)
    

    【讨论】:

      【解决方案3】:
      Enum.filter(list, fn x -> x != "" end)
      

      【讨论】:

      • 嗨!请edit您的答案以扩展您发布的代码 sn-p 的工作原理。谢谢!
      猜你喜欢
      • 2013-09-15
      • 2015-07-21
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-21
      • 1970-01-01
      • 2017-02-09
      • 2015-11-17
      相关资源
      最近更新 更多