我定义了如下地图:
%{
"24fe6042-2673-4713-8052-5c06e5ddcce8" => %Parameter{
index: 1,
name: "b",
},
"28ab6e8b-95b8-4123-af5d-5e988071c383" => %Parameter{
index: 0,
name: "a",
}
},
如何根据值内的index
将映射排序为数组?
发布于 2018-12-22 04:14:14
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)
https://stackoverflow.com/questions/53892893
复制相似问题