同时
Map.values/2
肯定会成功的
Kernel.SpecialForms/1
理解可能是一种更灵活的方式,因为它允许您在适当的地方过滤和/或修改结果。
input = %{
"0" => [
%{"foo" => 1, "baz" => 10}
],
"1" => [
%{"foo" => 2, "baz" => 11}
]
}
for {_, [map]} <- input, do: map
#â [%{"baz" => 10, "foo" => 1}, %{"baz" => 11, "foo" => 2}]
如果你希望
更多
在值的每个列表中有一个以上的元素,请使用
Enum.reduce/3
:
Enum.reduce(input, [], fn {_, maps}, acc -> acc ++ maps end)
#â [%{"baz" => 10, "foo" => 1}, %{"baz" => 11, "foo" => 2}]
另一种可能是使用
Enum.flat_map/2
:
Enum.flat_map(input, &elem(&1, 1))
#â [%{"baz" => 10, "foo" => 1}, %{"baz" => 11, "foo" => 2}]
fwiw,解决方案
Map.values/1
(不推荐):
input
|> Map.values()
|> Enum.flat_map(& &1)
#â [%{"baz" => 10, "foo" => 1}, %{"baz" => 11, "foo" => 2}]