这个问题在这里已经有了答案:
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/