首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据值对地图进行排序?

如何根据值对地图进行排序?
EN

Stack Overflow用户
提问于 2018-12-22 03:47:27
回答 1查看 119关注 0票数 0

我定义了如下地图:

代码语言:javascript
运行
复制
%{
      "24fe6042-2673-4713-8052-5c06e5ddcce8" => %Parameter{
        index: 1,
        name: "b",
      },
      "28ab6e8b-95b8-4123-af5d-5e988071c383" => %Parameter{
        index: 0,
        name: "a",
      }
    },

如何根据值内的index将映射排序为数组?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-22 04:14:14

使用Enum.sort/2

代码语言:javascript
运行
复制
Enum.sort(input, fn
  {_, %Parameter{index: i1}}, {_, %Parameter{index: i2}} -> i1 <= i2
end)

或者(不太习惯于在每次迭代中使用Access行为)

代码语言:javascript
运行
复制
Enum.sort(input, fn
  {_, v1}, {_, v2} -> v1.index <= v2.index
end)

我不确定我是否理解了“将映射排序为数组”的措辞,但是如果您想要丢弃键并获得一个值数组,请使用Map.values/1

代码语言:javascript
运行
复制
input
|> Map.values()
|> Enum.sort(fn
  %Parameter{index: i1}, %Parameter{index: i2} -> i1 <= i2
end)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53892893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档