我有一个像这样的数组
array = [[Sat, 01 Jul 2017, 2.0],
[Sat, 01 Jul 2017, 2.0],
[Wed, 05 Jul 2017, 2.0],
[Thu, 06 Jul 2017, 2.0],
[Thu, 06 Jul 2017, 18.0],
[Fri, 07 Jul 2017, 2.0],
[Wed, 12 Jul 2017, 2.0],
[Thu, 13 Jul 2017, 2.0],
[Fri, 14 Jul 2017, 2.0],
[Wed, 19 Jul 2017, 2.0],
[Thu, 20 Jul 2017, 2.0],
[Fri, 21 Jul 2017, 2.0],
[Wed, 26 Jul 2017, 2.0],
[Thu, 27 Jul 2017, 2.0],
[Fri, 28 Jul 2017, 2.0]]
我想像这样转换这个数组
array = [[Sat, 01 Jul 2017, 4.0],
[Wed, 05 Jul 2017, 2.0],
[Thu, 06 Jul 2017, 20.0],
[Fri, 07 Jul 2017, 2.0],
[Wed, 12 Jul 2017, 2.0],
[Thu, 13 Jul 2017, 2.0],
[Fri, 14 Jul 2017, 2.0],
[Wed, 19 Jul 2017, 2.0],
[Thu, 20 Jul 2017, 2.0],
[Fri, 21 Jul 2017, 2.0],
[Wed, 26 Jul 2017, 2.0],
[Thu, 27 Jul 2017, 2.0],
[Fri, 28 Jul 2017, 2.0]]
答案 0 :(得分:3)
array.group_by(&:first).map do |k, v|
[k, v.reduce(0) { |memo, (_, v)| memo + v }]
end
或
array.map(&:dup)
.group_by(&:shift)
.map { |k, v| [k, v.flatten.reduce(&:+)] }
或
array.each_with_object(Hash.new(0)) do |(k, v), acc|
acc[k] += v
end.to_a