Sam*_*ira 2 hashmap elixir phoenix-framework
如何使用另一个映射的相应键的值来更新映射中的所有值?例如我有以下两张地图:
map = %{"December 2021" => 0, "November 2021" => 0, "October 2021" => 0}
map_2 = %{"December 2021" => 7, "November 2021" => 6}
Run Code Online (Sandbox Code Playgroud)
我想用map_2中的相应值更新map中的所有值,所以最后map = %{"December 2021" => 7, "November 2021" => 6, "October 2021" => 0}
我努力了:
Enum.map(map_2, fn {key, value} -> %{map | k => v} end)
Run Code Online (Sandbox Code Playgroud)
我还尝试了上面的代码以及其他函数(例如 Map.update!/3 和类似函数),但它们都返回一个列表,其中包含 Enum.map 每次迭代的映射。
有人知道如何做吗?
提前致谢
我认为您正在寻找Enum.reduce/3。这里的Reduce意味着将集合减少到单个值。这里要减少的集合是map_2。您开始的初始/单个值是原始集合map。输出是初始值的修改。
在此示例中, 的每个键/值map_2都传递给也需要累加器的函数acc。acc使用初始值map(Enum.reduce 的第二个参数)进行初始化。在这种情况下, 的每个值map_2都会添加到map:
map = %{"December 2021" => 0, "November 2021" => 0, "October 2021" => 0}
map_2 = %{"December 2021" => 7, "November 2021" => 6}
Enum.reduce(map_2, map, fn {key, value}, acc ->
Map.put(acc, key, value)
end)
#> %{"December 2021" => 7, "November 2021" => 6, "October 2021" => 0}
Run Code Online (Sandbox Code Playgroud)
如果您想要不同的行为,例如,不要添加 中map_2不存在的键的值map:尝试更改reducer 函数。
| 归档时间: |
|
| 查看次数: |
649 次 |
| 最近记录: |