我正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.做这个的最好方式是什么?
如果我理解正确,你想要将每个地图都带入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这里使用,但它是一样的)