我已经定义了如下地图:
%{
"24fe6042-2673-4713-8052-5c06e5ddcce8" => %Parameter{
index: 1,
name: "b",
},
"28ab6e8b-95b8-4123-af5d-5e988071c383" => %Parameter{
index: 0,
name: "a",
}
},
如何根据值内的index
将地图分类为数组?
答案 0 :(得分:2)
Enum.sort(input, fn
{_, %Parameter{index: i1}}, {_, %Parameter{index: i2}} -> i1 <= i2
end)
或(习惯用法较少,每次迭代都使用Access
行为)
Enum.sort(input, fn
{_, v1}, {_, v2} -> v1.index <= v2.index
end)
我不确定我是否理解“将地图分类为数组”的措辞,但是如果您要舍弃键并获取值的数组,请使用Map.values/1
。
input
|> Map.values()
|> Enum.sort(fn
%Parameter{index: i1}, %Parameter{index: i2} -> i1 <= i2
end)