我有这两个数组:
array1 = [1,2,3,4,5]
array2 = ['aaa','bbb','ccc']
我在第一个数组上进行迭代:
array1.each do |item|
puts "#{item} = #{<what I can't figure out>}"...
end
我希望能够将array2的值顺序分配给循环中array1的值,以便块的结果为:
1 = 'aaa'
2 = 'bbb'
3 = 'ccc'
4 = 'aaa'
5 = 'bbb'
依此类推,以便第二个数组按顺序循环到第一个数组中的项目。
我没有那么好的数学,但似乎会有一个功能可以做到这一点。
答案 0 :(得分:5)
试试这个
array1 = [1,2,3,4,5]
array2 = ['aaa','bbb','ccc'].cycle
array1.each do |item|
puts "#{item} = #{array2.next}"
end
答案 1 :(得分:1)
我更喜欢@Ursus&#39;使用Array#cycle,但您也可以写下以下内容。
arr1 = [1,2,3,4,5]
arr2 = ['aaa','bbb','ccc']
arr1.each_with_index { |item,i| puts "%i = %s" % [item, arr2[i % arr2.size]] }
1 = aaa
2 = bbb
3 = ccc
4 = aaa
5 = bbb
答案 2 :(得分:1)
zip
在这里很有用:
array1 = [1,2,3,4,5]
array2 = ['aaa','bbb','ccc']
puts array1.zip(array2.cycle).map { |n,s| "#{n} = #{s}" }
#1 = aaa
#2 = bbb
#3 = ccc
#4 = aaa
#5 = bbb
#=> nil
答案 3 :(得分:0)
如果它们的大小相同:
array1.size.times do |i|
puts "#{array1[i]} = #{array2[i]}"
end
易于阅读,可以延伸至array3
,依此类推
答案 4 :(得分:0)
使用模运算符:
array1 = [1,2,3,4,5]
array2 = ['aaa','bbb','ccc']
for i in (0..(array1.count-1))
puts "#{array1[i]} = #{array2[i % array2.count]}"
end