elixir按关键字获取列表元素

Ale*_*ert 2 elixir

我正Map和我一起工作List.

在地图的情况下,我只希望一些元素,按关键字搜索:

my_map = %{key1: "value1", key2: "value2", status: :success}
Map.take(my_map, [:key1, :status])

my_list_of_maps = [%{key1: "value1", key2: "value2", status: :success}, %{key1: "value3", key2: "value4", status: :error}, %{key1: "value5", key2: "value6", status: :success}]
Run Code Online (Sandbox Code Playgroud)

现在,我希望做同样的事情my_list_of_maps.做这个的最好方式是什么?

wha*_*ide 6

如果我理解正确,你想要将每个地图都带入my_list_of_maps,只取出它的:key1:status键,然后使用新地图构建一个新列表.如果这是正确的,那么你可以映射my_list_of_maps:

Enum.map(my_list_of_maps, fn map -> Map.take(map, [:key1, :status])) end
Run Code Online (Sandbox Code Playgroud)

Enum.map/2在例子中使用过.

(小自我挑剔:惯用的Elixir可能会写&Map.take(&1, [:key1, :status])而不是在fn这里使用,但它是一样的)