Elixir 检查 map 是否包含键列表

标签 elixir

这个问题在这里已经有了答案:





Proper way to determine if a Map has certain keys

(3 个回答)


5年前关闭。



required_keys = [ "a", "b", "c" ]map_to_check = %{ "x" => "foo", "y" => "bar", "z" => "baz" }
鉴于上述 required_keys 列表和 map_to_check 映射,我如何轻松测试 map_to_check 是否包含 Elixir 的 required_keys 列表中找到的所有键?

我知道我可以使用 Map.has_key?(map_to_check, "a")检查是否存在一个值。

并尝试遍历 required_keys 给了我一个错误,因为我正在使用 Enum.map 像这样:

Enum.map(required_keys, fn k -> Map.has_key?(Map.keys(map_to_check), k) end)

以上不起作用,因为 Enum.map 不遍历列表。

编辑

通过查看答案,我注意到我的解决方案不起作用的原因不是因为 Enum.map 无法迭代列表,而是因为我将列表传递给 Map.has_key?函数调用 Map.keys(map_to_check)
因此,以下替代方案也应该有效:
Enum.map(required_keys, fn k -> Map.has_key?(map_to_check, k) end)

最佳答案

试试 Enum.all?/2 :

required_keys |> Enum.all?(&(Map.has_key?(map_to_check, &1)))

关于Elixir 检查 map 是否包含键列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36822897/

相关文章:

loops - 在循环期间增加整数

Elixir - 动态调用私有(private)函数

pattern-matching - 无法调用本地内部匹配

database - 如何在 Elixir 中创建 mnesia 表?

elixir - 查找所有采用行为的模块

elixir - 升级 Elixir 后出现 "Phoenix.HTML.Engine.init/1 is undefined or private"和 "Plug.Conn.__struct__/1 is undefined"等错误

recursion - 在 Elixir/Erlang 中测试递归 IO 提示

elixir - 如何创建 Mix Task 来生成文件

混合键 Elixir map

erlang - 有没有 Elixir 可以做而 Erlang 做不到的事情,或者反之亦然?