到达终点时重复循环

时间:2018-08-27 03:35:31

标签: ruby

我正在尝试概念化两个循环的迭代

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

numbers_array进行迭代时,add_to_array进行迭代,同时将两个元素同时添加在一起。注意事项是add_to_array到达结尾时,它将重新开始将其元素添加到numbers_array中的下一个索引中。因此,在numbers_array[4],我们将添加add_to_array[0],然后将numbers_array[5]添加到add_to_array[1],依此类推。重复此过程,直到我们到达numbers_array的结尾为止。

任何输入将不胜感激!

4 个答案:

答案 0 :(得分:8)

您正在寻找Enumerable#zipEnumerable#cycle

Object

现在对返回的数组进行任何操作。例如。要减少压缩结果求和元素,请映射ro Enumerable#sum

numbers_array = [1,2,3,4,5,6,7,8,9,10]
#⇒ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
add_to_array = [1,2,3,4]
#⇒ [1, 2, 3, 4]
numbers_array.zip(add_to_array.cycle)
#⇒  [[1, 1], [2, 2], [3, 3], [4, 4], [5, 1],
#    [6, 2], [7, 3], [8, 4], [9, 1], [10, 2]]

答案 1 :(得分:0)

它通过使用UseCors运算符来循环遍历索引。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    // Enable Cors
    app.UseCors("MyPolicy");
    ...
    ...
    ...
}

如果您不想从下一个数组重新开始,则类似的一种很酷的方法将是%

https://apidock.com/ruby/Array/zip

答案 2 :(得分:0)

add_to_array.zip(*numbers_array.each_slice(add_to_array.size)).
             map { |a| a.sum { |e| e.to_i } }
  #=> [16, 20, 13, 16]
需要

e.to_i才能将nil的值转换为零。参见NilClass#to_i

答案 3 :(得分:0)

另一个选择:

ContentPresenter

缺点:add_to_array被numbers_array.map { |e| e + add_to_array.rotate!.last } # => [2, 4, 6, 8, 6, 8, 10, 12, 10, 12] 突变