Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 1.8.7:使用可枚举类型的sum对_进行分组_Ruby_Enumerable - Fatal编程技术网

Ruby 1.8.7:使用可枚举类型的sum对_进行分组

Ruby 1.8.7:使用可枚举类型的sum对_进行分组,ruby,enumerable,Ruby,Enumerable,我有一系列记录,这些记录按以下结构排列: 使用Ruby的groupby/inject/sum或Enumerable提供的任何东西返回一个有序的散列数组,其中每个散列由“some_id”键控,值是该id的“some_total”的总和,最好的方法是什么“按数组开始处总数量最高的id排序?结果如下所示: [{“some_id”=>2,“sum”=>350}, {“some_id”=>3,“sum=>125}, {“some_id”=>1,“sum”=>10}]函数方法: hs.group_by {

我有一系列记录,这些记录按以下结构排列:

使用Ruby的groupby/inject/sum或Enumerable提供的任何东西返回一个有序的散列数组,其中每个散列由“some_id”键控,值是该id的“some_total”的总和,最好的方法是什么“按数组开始处总数量最高的id排序?结果如下所示:

[{“some_id”=>2,“sum”=>350},
{“some_id”=>3,“sum=>125},
{“some_id”=>1,“sum”=>10}]

函数方法:

hs.group_by { |h| h["some_id"] }.map do |id, hs|
  sum = hs.map { |h| h["some_total"] }.inject(:+) 
  {:some_id => id, :sum => sum}
end.sort_by { |h| -h[:sum] } 

#=> [{:some_id=>2, :sum=>350}, 
#    {:some_id=>3, :sum=>125}, 
#    {:some_id=>1, :sum=>10}]