使用地图枚举中的新键创建地图

时间:2021-05-25 00:29:39

标签: elixir

我有一个看起来像这样的地图枚举:

[
 %{
   "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_indexEnum.mapMap.newMap.put

但不确定如何组合它们

1 个答案:

答案 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}
]
相关问题