从地图列表中获取 %{key,value}
Get %{key,value} from list of map
我有嵌套地图的列表
[ %{
"name" => "sam",
"p" => [
%{
"amount" => "",
}
],
"group" => "a",
},
%{
"name" => "lisa",
"p" => [
%{
"amount" => "",
}
],
"group" => "a",
},
%{
"name" => "joe",
"p" => [
%{
"amount" => "",
}
],
"group" => "b",
} ]
我必须遍历列表以从列表中获取 name
以及 amount
,如果组是 a
然后检索 amount
,否则将 nil
放入地图。这样最终的列表看起来像
[
%{name: "sam",amount: ""},
%{name: "lisa", amount: ""},
%{name: "joe", amount: nil}
]
谁能帮我解决这个问题?
您需要映射您的元素,因此 Enum.map/2
具有匹配不同情况的不同功能子句似乎是最合适的。
Enum.map(data, fn
%{"group" => "a", "name" => name, "p" => [%{"amount" => amount}]} ->
%{name: name, amount: amount}
%{"name" => name} ->
%{name: name, amount: nil}
end)
#⇒[
# %{amount: "", name: "sam"},
# %{amount: "", name: "lisa"},
# %{amount: nil, name: "joe"}
# ]
我有嵌套地图的列表
[ %{
"name" => "sam",
"p" => [
%{
"amount" => "",
}
],
"group" => "a",
},
%{
"name" => "lisa",
"p" => [
%{
"amount" => "",
}
],
"group" => "a",
},
%{
"name" => "joe",
"p" => [
%{
"amount" => "",
}
],
"group" => "b",
} ]
我必须遍历列表以从列表中获取 name
以及 amount
,如果组是 a
然后检索 amount
,否则将 nil
放入地图。这样最终的列表看起来像
[
%{name: "sam",amount: ""},
%{name: "lisa", amount: ""},
%{name: "joe", amount: nil}
]
谁能帮我解决这个问题?
您需要映射您的元素,因此 Enum.map/2
具有匹配不同情况的不同功能子句似乎是最合适的。
Enum.map(data, fn
%{"group" => "a", "name" => name, "p" => [%{"amount" => amount}]} ->
%{name: name, amount: amount}
%{"name" => name} ->
%{name: name, amount: nil}
end)
#⇒[
# %{amount: "", name: "sam"},
# %{amount: "", name: "lisa"},
# %{amount: nil, name: "joe"}
# ]