2016-03-01 51 views
2

我正在使用MapListelixir通過關鍵字獲取列表元素

在地圖的情況下,我只希望某些元素,通過關鍵字搜索:

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。做這個的最好方式是什麼?

回答

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

(小自我挑剔:習慣藥劑可能會寫&Map.take(&1, [:key1, :status]),而不是在這裏使用fn,但它是相同的)

+0

好極了!謝謝@whatyouhide。 –