我正在使用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}]
现在,我希望my_list_of_maps
做同样的事情。这样做的最佳方式是什么?
答案 0 :(得分: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
我在示例中使用了Enum.map/2
。
(小自我挑剔:惯用的Elixir可能会写&Map.take(&1, [:key1, :status])
而不是在这里使用fn
,但它是相同的)