elixir按关键字获取列表元素

时间:2016-03-01 22:06:26

标签: elixir

我正在使用MapList

在地图案例中,我只希望通过关键字搜索一些元素:

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做同样的事情。这样做的最佳方式是什么?

1 个答案:

答案 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,但它是相同的)