我正在尝试使用枚举函数更改列表的格式。
原始列表如下
myInitialList =
[
{1,
[
["A3", "Teddy"],
["B3", "t@gmail.com"],
["C3", "56123456"],
["D3", "spain"]
]},
{2,
[
["A4", "Katrin"],
["B4", "m@yahoo.com"],
["C4", "85002145"],
["D4", "USA"]
]},
{3,
[
["A2", "name"],
["B2", "email"],
["C2", "phone"],
["D2", "country"]
]}
]
我想过滤上面的列表以得到下面的结果
myFinalList =
[
%{
name: "Teddy",
email: "t@gmail.com",
phone: "56123456",
country: "spain"
},
%{
name: "Katrin",
email: "m@yahoo.com",
phone: "85002145",
country: "USA"
}
]
有人知道我如何构建过滤器功能吗?
这将使我可以轻松地将数据插入数据库中。自从一开始我就完全陷入困境,我还没有真正尝试过任何事情
在代码中,它应该类似于
myFinalList = myInitialList |> Enum.filter(.....)
答案 0 :(得分:1)
您正在寻找Enum.map/2
函数。您可以通过以下格式获取myFinalList
:
myFinalList =
Enum.map(myInitialList, fn
{_index, [[_, name], [_, email], [_, phone], [_, country]]} ->
%{
name: name,
email: email,
phone: phone,
country: country
}
end)
答案 1 :(得分:0)
首先,您需要将输入分为名称和实际值:
[names | items] = myInitialList |> Enum.reverse()
items
的顺序相反,但可以。
现在让我们定义映射器:
mapper =
fn {_, lists} -> Enum.map(lists, fn [_, e] -> e end) end
最后,
for values <- Enum.reverse(items),
do: Enum.into(Enum.zip(mapper.(names), mapper.(values)), %{})