獲得項目我有這樣的結構:靈藥 - 通過指數嵌套放
map = %{"a" => "foo",
"b" => [%{"b1" => "bar",
"b2" => "baz"}]}
只要我想要得到的是:
map.b[0].b1
是什麼讓最簡單的方法它?
有沒有辦法使用kernerl.get_in/2
獲得項目我有這樣的結構:靈藥 - 通過指數嵌套放
map = %{"a" => "foo",
"b" => [%{"b1" => "bar",
"b2" => "baz"}]}
只要我想要得到的是:
map.b[0].b1
是什麼讓最簡單的方法它?
有沒有辦法使用kernerl.get_in/2
是的,有可能使用的Kernel.get_in/2
組合Access.at/1
得到它:
map = %{"a" => "foo",
"b" => [%{"b1" => "bar",
"b2" => "baz"}]}
get_in(map, ["b", Access.at(0), "b1"])
# => "bar"
你會得到一個錯誤這樣做,因爲你的地圖的鍵是字符串,而不是原子,而且也沒有list[index]
語法。
您可以通過
map["b"] |> Enum.at(0) |> Map.get("b1")
可以使用List.pop_at
map = %{"a" => "foo", "b" => [%{"b1" => "bar", "b2" => "baz"}]} map["b"] |> List.pop_at(0) |> (fn({res, rest}) -> res end).()