我要做到以下几点:如何添加两个多维数组
array1 = [[1, 10], [2, 20], [3, 10], [4, 30]]
array2 = [[1, 10], [2, 10], [3, 5], [4, 10]]
我想以这样一种方式,每个子阵列的第二个元素将被添加添加两个阵列。我想要以下输出。
result = [[1,20],[2,30],[3,15],[4,40]]
我要做到以下几点:如何添加两个多维数组
array1 = [[1, 10], [2, 20], [3, 10], [4, 30]]
array2 = [[1, 10], [2, 10], [3, 5], [4, 10]]
我想以这样一种方式,每个子阵列的第二个元素将被添加添加两个阵列。我想要以下输出。
result = [[1,20],[2,30],[3,15],[4,40]]
[array1, array2].transpose.map{|(k, v1), (_, v2)| [k, v1 + v2]}
# => [[1, 20], [2, 30], [3, 15], [4, 40]]
如下另一种方法:
array1 = [[1,10],[2,20],[3,10],[4,30]]
array2 = [[1,10],[2,10],[3,5],[4,10]]
Hash[array1].merge(Hash[array2]) { |key,old,new| old + new }.to_a
# => [[1, 20], [2, 30], [3, 15], [4, 40]]
这可以用的Array#zip
和Array#map
的组合来实现:
result = array1.zip(array2).map { |l, r| [l[0], l[1] + r[1]] }
#=> [[1, 20], [2, 30], [3, 15], [4, 40]]
然而,键 - 值对通常最好视为Hash
。在其他业务,这将让你#merge
:
hash1
#=> {1=>10, 2=>20, 3=>10, 4=>30}
hash2
#=> {1=>10, 2=>10, 3=>5, 4=>10}
result = hash1.merge(hash2) { |_, l, r| l + r }
#=> {1=>20, 2=>30, 3=>15, 4=>40}
你怎么能用一个带有字符串的多维数组来做到这一点? –
同样的道理。试一试! – Johnsyweb
像解决方案+1 –
感谢快速的解决方案..它的作品! –