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]