如何遍历数组一定次数?

时间:2020-08-08 23:44:11

标签: arrays ruby loops iteration

array = [apple, orange]    
number = 4

所需的输出:

apple    
orange    
apple    
orange

到目前为止,我有:

array.each do |x|
  puts x
end

我只是不确定如何遍历数组4次。

5 个答案:

答案 0 :(得分:7)

array = ["apple", "orange"]
iter_count = 4
array.cycle.take(iter_count).each { |x|
  puts x
}

array.cycle为我们提供了一个无限的枚举,它重复了array的元素。然后,我们从中获取第一个iter_count元素并对其进行迭代。

Enumerable有很多东西可以执行这样的简单任务。熟悉该模块后,您会发现可以更轻松地完成许多面向数组和流的过程。

答案 1 :(得分:4)

ar = ["apple", "orange"]
n = 4
n.times { ar.each{|a| p a} }

答案 2 :(得分:2)

array = ["apple", "orange"]
numOfIteration=4
for i in 0..numOfIteration-1
   puts array[i%array.size]
end

答案 3 :(得分:1)

一种有趣的方式实现这一目标:

4.times { |n| p array[n % array.count] }

绝对不是最好的:每次迭代我们都在计算数组中元素的数量,并且还要处理n可除以元素数量的问题。它也不太可读,因为需要一些认知处理才能理解该语句。

一种更好的方法:

print(arr.cycle.take(4).join("\n"))
apple
orange
apple
orange

答案 4 :(得分:0)

另一个非惯用的for循环,三个点消除了显式减法的需要

array = ['apple', 'orange']
number = 4

for i in 0...number
  puts array[i % array.size]
end

和一些带有lambda和递归的愚蠢行为:D

array = ['apple', 'orange']
number = 4

loop = lambda do |list, count|
  return if count == number

  puts list[count % list.size]

  loop.(list, count + 1)
end

loop.(array, 0)