Jak*_*Jak 5 ruby arrays ruby-on-rails hashmap
我想输出一个散列数组,其中name所有散列都是唯一的.我将如何使用ruby进行此操作?
这是我的意见:
input = [{:name => "Kutty", :score => 2, :some_key => 'value', ...},
{:name => "Kutty", :score => 4, :some_key => 'value', ...},
{:name => "Baba", :score => 5, :some_key => 'value', ...}]
Run Code Online (Sandbox Code Playgroud)
我希望输出看起来像这样:
output = [{:name => "Kutty", :score => 4, :some_key => 'value', ...},
{:name => "Baba", :score => 5, :some_key => 'value', ...}]
Run Code Online (Sandbox Code Playgroud)
Joa*_*son 15
要根据:name删除重复项,只需尝试;
output = input.uniq { |x| x[:name] }
Run Code Online (Sandbox Code Playgroud)
在这里演示.
编辑:由于您在评论中添加了排序要求,如果您正在使用Rails,这里是如何选择每个名称得分最高的条目,我看到您已经获得了上面"标准"Ruby的答案;
output = input.group_by { |x| x[:name] }
.map {|x,y|y.max_by {|x|x[:score]}}
Run Code Online (Sandbox Code Playgroud)
可能会有一点解释; 第一行groups按名称输入条目,以便每个名称都有自己的条目数组.第二行遍历组,按名称命名,maps每个名称组到达分数最高的条目.
在这里演示.
| 归档时间: |
|
| 查看次数: |
5039 次 |
| 最近记录: |