当数组长度始终相同时,在Ruby中添加两个数组

时间:2014-01-17 05:09:12

标签: ruby arrays

所以,我需要将两个数组一起添加到第三个数组中。 EG

a = [1,2,3,4]
b = [3,4,5,6]

这样:

c = [4,6,8,10]

我读了这里给出的答案:https://stackoverflow.com/questions/12584585/adding-two-ruby-arrays

但是我正在使用codecademy labs ruby​​编辑器而且它不能在那里工作,而且我的数组的长度总是相同的。另外,我不知道方法“.with_index”是什么或做什么,我不明白为什么当值已经是整数时必须使用“.to_i”。

看起来这应该很简单?

2 个答案:

答案 0 :(得分:3)

选项1

对于纯Ruby 解决方案,请尝试使用transpose方法:

a = [1,2,3,4]
b = [3,4,5,6]
c = [a, b].transpose.map{|x, y| x + y} 
#=> [4,6,8,10]

选项2

如果您在Rails环境中,可以使用Rails'sum方法:

[a, b].transpose.map{|x| x.sum} 
#=> [4,6,8,10]

<强>说明

transpose适用于您的场景,因为如果子阵列的长度不同,它会引发IndexError。来自the docs

  

假设self是一个数组数组并转换行和列。   如果子数组的长度不匹配,则引发IndexError。

答案 1 :(得分:3)

a = [1,2,3,4]
b = [3,4,5,6]
a.zip(b).map { |i,j| i+j } # => [4, 6, 8, 10] 

下面

a.zip(b) # => [[1, 3], [2, 4], [3, 5], [4, 6]]

map将每个2元组转换为其元素的总和。