如何按指定次数迭代数组?Ruby数组迭代实现求助
解决数组重复迭代指定次数的问题
嘿,我明白你的需求啦——你想让数组["apple", "orange"]输出4个元素,最终得到apple orange apple orange的结果对吧?原来的代码只是遍历数组一次,所以只会输出两个元素,这里给你几个简单好用的实现方法:
方法一:用数组的cycle方法(最简洁)
Ruby的数组自带cycle方法,可以指定循环遍历数组的次数。因为你的数组有2个元素,要输出4个元素刚好是把数组完整遍历2次,直接这么写就行:
array = ["apple", "orange"] number = 4 # 循环2次数组,正好输出4个元素 array.cycle(number / array.length) do |x| puts x end
如果之后你的number不是数组长度的整数倍(比如number=5),更灵活的写法是直接循环number次,每次取数组的循环索引:
array = ["apple", "orange"] number = 4 (0...number).each do |i| puts array[i % array.length] end
这里的i % array.length会让索引在0和1之间循环,i从0到3时,索引依次是0、1、0、1,正好对应你要的四个元素。
方法二:先扩展数组再遍历
你也可以先把数组扩展成包含4个元素的新数组,再遍历输出:
array = ["apple", "orange"] number = 4 # 把原数组重复2次,生成新数组["apple", "orange", "apple", "orange"] expanded_array = array * (number / array.length) expanded_array.each do |x| puts x end
这种方式很直观,生成的新数组就是你要输出的元素集合,遍历起来和你原来的代码逻辑一致。
方法三:嵌套循环(最直观)
如果喜欢更直白的逻辑,可以用外层循环控制数组的重复次数,内层循环遍历数组:
array = ["apple", "orange"] number = 4 # 计算需要重复数组的次数:4个元素 ÷ 每个数组2个元素 = 2次 (number / array.length).times do array.each do |x| puts x end end
外层循环跑2次,每次内层遍历数组输出两个元素,加起来就是4个元素的结果啦。
内容的提问来源于stack exchange,提问作者Karen
相关产品推荐
相关产品推荐

