需要帮助将列表拆分为2个不同的列表

时间:2018-03-26 23:38:12

标签: ruby

这是我的代码,它创建了20个项目的列表,我想将其拆分为2个10个列表,并且一次只显示一个列表。我怎样才能在红宝石中实现这一点?

def list_dogs
counter = 0
if counter <= 10
  Dogs::DogsPopularity.all.each do |dog|

    puts "#{counter +=1}. #{dog.name}"
    #binding.pry
  end

elsif counter > 10 && counter <= 20
  Dogs::DogsPopularity.all.each do |dog|
    puts "#{counter +=1}. #{dog.name}"
  #  binding.pry
  end
end
#binding.pry
end

这就是打印出来的.....

  1. 拉布拉多犬
  2. 金毛猎犬
  3. 比格尔
  4. 法国斗牛犬
  5. 贵宾犬
  6. 约克夏犬
  7. 义和拳
  8. 腊肠
  9. 澳大利亚牧羊犬
  10. Pembroke Welsh Corgi
  11. 骑士国王查尔斯猎犬
  12. Shih Tzu
  13. 波士顿梗犬
  14. 哈瓦那犬
  15. 布列塔尼
  16. 美国可卡犬
  17. 吉娃娃
  18. 帕格
  19. 马耳他

1 个答案:

答案 0 :(得分:0)

我们必须假设您的班级/模块返回20只狗,如果是这样的话:

def list_dogs
  Dogs::DogsPopularity.all.each_slice(10).each do |dog_arr|
    dog_arr.each_with_index do |dog, i|
      puts "#{i+1}. #{dog.name}"
    end
  end
end

要看到这适用于基本数组,请参阅:

[*1..100].each_slice(10).each_with_index{|arr, i| puts "#{i+1}: #{arr}"}