我有一个json结构:
[["item1", 1, 0], ["item1", 1, 0], ["item1", 1, 0], ["item2", 1, 0], ["item2", 1, 0],["item3", 1, 0],["item4", 1, 0],["item5", 1, 0]..]]
现在我通过循环手动对它们求和以获得以下结果
[["item1", 3, 0], ["item2", 2, 0], ["item4", 1, 0], ["item5", 1, 0]]
还有另一种方法吗?我查看了 Ruby 中的数组模块,但我不确定是否存在另一种方法来做到这一点......
编辑:这就是我正在做的:因为在这里我只总结第二项
@object = []
@stat = Hash.new
@data.each do |d|
if @object.include?(d[0])
@stat [d[0]] += d[2]
else
@object << d[0]
@stat[ d[0] ] = d[2]
end
end
编辑2:
我计时了一个班轮解决方案并将其与我自己的进行比较
oneliner:0.005 我的:0.007
这就是我最后使用的:
data.inject(Hash.new(0)) { |stat, item|
if item[0] =~ /[a-z][a-z][0-9][0-9][a-z]/ # extra stuff that I needed
item[0] = item[0][0..8]
stat[item[0]] += item[2]
end
stat
}
谢谢大家,我学到了很多。