Ruby 当循环到达终点时重复循环

Ruby 当循环到达终点时重复循环,ruby,Ruby,我试图将两个循环的迭代概念化 numbers_array = [1,2,3,4,5,6,7,8,9,10] add_to_array = [1,2,3,4] 当numbers\u数组迭代时,add\u to\u数组同时迭代将两个元素添加到一起。注意事项是,一旦add_to_array到达末尾,它就会开始将其元素添加到numbers_array中的下一个索引中。因此,在数字数组[4]中,我们将添加数字数组[0]然后添加数字数组[5]到数字数组[1]等等。此过程将重复,直到到达数字\u数组的末尾

我试图将两个循环的迭代概念化

numbers_array = [1,2,3,4,5,6,7,8,9,10]
add_to_array = [1,2,3,4]
numbers\u数组
迭代时,
add\u to\u数组
同时迭代将两个元素添加到一起。注意事项是,一旦
add_to_array
到达末尾,它就会开始将其元素添加到
numbers_array
中的下一个索引中。因此,在
数字数组[4]
中,我们将添加
数字数组[0]
然后添加
数字数组[5]
数字数组[1]
等等。此过程将重复,直到到达
数字\u数组的末尾


任何意见都将不胜感激

它使用
%
操作符循环索引

numbers_array = [1,2,3,4,5,6,7,8,9,10]
add_to_array = [1,2,3,4]

numbers_array.map.with_index do |n, i|
  n + add_to_array[i % add_to_array.length]
end
如果你不想在下一个数组中重新开始,一个很酷的方法是
.zip

您正在寻找和:

现在,对返回的数组执行任何操作。例如,为了减少压缩结果求和元素,映射ro:

nil
值转换为零需要
e.to_i
。请参阅。

另一个选项:

numbers_array.map { |e| e + add_to_array.rotate!.last }

# => [2, 4, 6, 8, 6, 8, 10, 12, 10, 12]

缺点:将_添加到_数组是通过
rotate进行变异的

请编辑以显示您的示例所需的结果(数组)。我上面的评论和我对答案的评论清楚地表明,我们不理解您的问题。您已经阅读了这些评论,但出于某种原因,您没有澄清您的问题。这赢得了我的反对票(如果你澄清你的问题,我会收回这一票)。我怀疑这是OP的期望。请检查我的答案以获得所需的输出(最后一行)。不过这仍然是我的猜测。@mudasobwa,我注意到了。我要求OP通过显示期望的结果来澄清。“在
数字数组[4]
中,我们将添加
数字数组[5]
数字数组[1]
”..@mudasobwa,这不是我正在做的(除非我没有变异
将数字数组添加到数组
)?我解释为“在
数字数组[4]
我们将添加
add_到_数组[0]
,后面是“将总和保存在
add_到_数组[0]
”。任何一种解释都是可能的。我们只能等待澄清。无论如何,通过回答两个问题,我们为OP提供了额外奖励。
numbers_array.zip(add_to_array.cycle).map(&:sum)
#⇒ [2, 4, 6, 8, 6, 8, 10, 12, 10, 12]
add_to_array.zip(*numbers_array.each_slice(add_to_array.size)).
             map { |a| a.sum { |e| e.to_i } }
  #=> [16, 20, 13, 16]
numbers_array.map { |e| e + add_to_array.rotate!.last }

# => [2, 4, 6, 8, 6, 8, 10, 12, 10, 12]