将Enum.filter与Enum.each

时间:2018-05-29 10:55:17

标签: elixir

使用以下地图列表:

[%{test: %{"one" => 1, "three" => 3, "two" => 2}}, ...]

这段代码根本不能过滤任何东西吗?

Enum.filter([map], fn(number) ->    
  Enum.each(number.test, fn {k, v} -> 
    v == 4                             
  end)                               
end)

如何让Enum.filter使用属于地图的属性?

1 个答案:

答案 0 :(得分:2)

Enum.each返回:ok,因此您的代码将始终返回与输入相同的值。

如果您想检查地图中的任何值是否为值4,您可以使用Enum.any?/2

Enum.any?(number.test, fn {k, v} -> 
  v == 4                             
end)

要检查所有是否具有值4,您可以使用Enum.all?/2

Enum.all?(number.test, fn {k, v} -> 
  v == 4                             
end)