ruby - 如何对数组中数组的每个唯一元素求和

标签 ruby

我有一个像这样的数组:

[1, 84]
[11, 29]
[11, 84]
[12, 18]
[15, 55]
[15, 4]

我想从这个数组生成一个新数组,例如:

[1, 84, 1]
[11, 113, 2]
[12, 18, 1]
[15, 59, 2]

其中每个子数组的第一个元素将是唯一的,它们对应的第二个元素将是总和,第三个元素将是它们的计数。在 11 的情况下,29 + 84 = 113,并且 11 存在 2 次,所以 [ 11, 113, 2]

最佳答案

a.group_by(&:first).map { |k,v| [k,v.map(&:last).inject(:+),v.size] }
# => [[1, 84, 1], [11, 113, 2], [12, 18, 1], [15, 59, 2]]

关于ruby - 如何对数组中数组的每个唯一元素求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21513576/

相关文章:

ruby-on-rails - 为什么我的产品上没有显示我的价格?

ruby - Ruby 对象中是否有方法将自身传递给 block 或过程?

ruby-on-rails - 如何跟踪多次调用以呈现 :partial 的信息

ruby-on-rails - #<#<Class :0x0 的未定义方法 'pathname'

ruby-on-rails - Rails 中的子域域管理

ruby-on-rails - 模拟 rspec 中的错误/异常(不仅仅是它的类型)

ruby-on-rails - 关于使用 Apache2 的 Ruby on Rails 的书籍?

ruby-on-rails - Ruby 通过自定义方法找到?

ruby - 无法使用 rackup 和 jRuby 启动简单的 Sinatra 应用程序(网络服务器无响应)

Ruby eigenclass(单例类)创建了吗?为了哪个?