在ruby中的“键”上合并或求和2个数组

这是阵列版本: Sum 2 hashes attributes with the same key

我有2个数组,例如:

a = [[1,10],[2,20],[3,30]]
b = [[1,50],70]]

如何在第一个值(如果存在)上对每个值求和:

c = [[1,60],100]]

解决方法

你可以这样做:
(a + b).group_by(&:first).map { |k,v| [k,v.map(&:last).inject(:+)] }

首先你把阵列放在一起,因为你不关心a和b,你只关心它们的元素.然后,group_by通过第一个元素对组合数组进行分区,以便可以轻松处理内部数组.然后你只需要用v.map(&:last)拉出内部数组的第二个(或最后一个)元素,并将它们与inject(:+)相加.

例如:

>> a = [[1,30]]
>> b = [[1,70]]
>> (a + b).group_by(&:first).map { |k,v.map(&:last).inject(:+)] }
=> [[1,100]]

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...