Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 on rails 从Ruby数组中删除重复项并求和_Ruby On Rails_Arrays_Ruby - Fatal编程技术网

Ruby on rails 从Ruby数组中删除重复项并求和

Ruby on rails 从Ruby数组中删除重复项并求和,ruby-on-rails,arrays,ruby,Ruby On Rails,Arrays,Ruby,我有以下数组[日期,值]: array = [[12 Mar 2015, 0], [12 Mar 2015, 5], [13 Mar 2015, 0], [14 Mar 2015, 49], [15 Mar 2015, 51], [15 Mar 2015, 10], [16 Mar 2015, 110], [17 Mar 2015, 0], [18 Mar 2015, 31], [19 Mar 2015, 47], [20 Mar 2015, 0], [21 Mar 2015, 0], [22

我有以下数组[日期,值]:

array = [[12 Mar 2015, 0], [12 Mar 2015, 5], [13 Mar 2015, 0], [14 Mar 2015, 49], [15 Mar 2015, 51], [15 Mar 2015, 10], [16 Mar 2015, 110], [17 Mar 2015, 0], [18 Mar 2015, 31], [19 Mar 2015, 47], [20 Mar 2015, 0], [21 Mar 2015, 0], [22 Mar 2015, 138], [22 Mar 2015, 10], [23 Mar 2015, 0]]
您可以看到有重复日期的数组。按日期分组时,如何求和值?这就是我想要的:

array = [[12 Mar 2015, 5], [13 Mar 2015, 0], [14 Mar 2015, 49], [15 Mar 2015, 61],  [16 Mar 2015, 110], [17 Mar 2015, 0], [18 Mar 2015, 31], [19 Mar 2015, 47], [20 Mar 2015, 0], [21 Mar 2015, 0], [22 Mar 2015, 148],  [23 Mar 2015, 0]]
更新

非常感谢@nathanvda,
inject({})do | hash,[time,index]|
是我的错误。无论如何,他的解决方案更清楚

array.inject({}) do |hash, item|
  time, index = item.to_a
  hash[time] = hash.fetch(time, 0) + index
  hash
end.to_a
更新

非常感谢@nathanvda,
inject({})do | hash,[time,index]|
是我的错误。无论如何,他的解决方案更清楚

array.inject({}) do |hash, item|
  time, index = item.to_a
  hash[time] = hash.fetch(time, 0) + index
  hash
end.to_a

您的天数数组应该如下所示

array = [["12 Mar 2015", 0], ["12 Mar 2015", 5], ["13 Mar 2015", 0], ["14 Mar 2015", 49], ["15 Mar 2015", 51], ["15 Mar 2015", 10], ["16 Mar 2015", 110], ["17 Mar 2015", 0], ["18 Mar 2015", 31], ["19 Mar 2015", 47], ["20 Mar 2015", 0], ["21 Mar 2015", 0], ["22 Mar 2015", 138], ["22 Mar 2015", 10], ["23 Mar 2015", 0]]

grouped = array.inject(Hash.new(0)) do |result, itm|
  result[itm.first] += itm.last
  result
end.to_a

您的天数数组应该如下所示

array = [["12 Mar 2015", 0], ["12 Mar 2015", 5], ["13 Mar 2015", 0], ["14 Mar 2015", 49], ["15 Mar 2015", 51], ["15 Mar 2015", 10], ["16 Mar 2015", 110], ["17 Mar 2015", 0], ["18 Mar 2015", 31], ["19 Mar 2015", 47], ["20 Mar 2015", 0], ["21 Mar 2015", 0], ["22 Mar 2015", 138], ["22 Mar 2015", 10], ["23 Mar 2015", 0]]

grouped = array.inject(Hash.new(0)) do |result, itm|
  result[itm.first] += itm.last
  result
end.to_a

[2015年3月12日,0]
,您希望它如何工作?它应该是
[“2015年3月13日”,0]
[2015年3月12日,0]
,您希望它如何工作?应该是
[“2015年3月13日”,0]
这甚至不是正确的ruby语法。如果我运行这个,它就不工作了。块的第二个参数不能是
[时间,索引]
。这是公认的答案吗?奇怪。这甚至不是正确的ruby语法。如果我运行这个,它就不工作了。块的第二个参数不能是
[时间,索引]
。这是公认的答案吗?奇怪的