我有一个看起来像这样的地图枚举:
[
%{
"key1" => "someVal",
"key2" => "anotherVal"
},
%{
"key1" => "someVal",
"key2" => "anotherVal"
}
]
如何更改此设置,以便使用新键更新地图,但使用一些以前的值
//New map will not have keys named `key1` or `key2` but a new set of key names
[
%{
"a" => "someVal",
"b" => "anotherVal",
"c" => 0
},
%{
"a" => "someVal",
"b" => "anotherVal",
"c" => 0
},
]
brand_newk
也将成为 Enum.map
所在的任何索引。
我考虑过使用 Enum.with_index
和 Enum.map
和 Map.new
或 Map.put
但不确定如何组合它们
答案 0 :(得分:2)
您可以调用 Enum.with_index/2
将每个映射与其索引配对,然后使用 Enum.map/2
将每个映射映射到具有新键的映射,如下所示:
[
%{
"key1" => "someVal",
"key2" => "anotherVal"
},
%{
"key1" => "someVal",
"key2" => "anotherVal"
}
]
|> Enum.with_index()
|> Enum.map(fn {map, index} ->
%{
"a" => map["key1"],
"b" => map["key2"],
"c" => index
}
end)
输出:
[
%{"a" => "someVal", "b" => "anotherVal", "c" => 0},
%{"a" => "someVal", "b" => "anotherVal", "c" => 1}
]