如何按指定项数迭代数组?含234元素数组每10项分页问题
问题1:如何每30项迭代一个数组?
用Ruby原生的each_slice方法就能实现,它会把数组按指定大小分割成子数组,然后逐个迭代这些子数组:
your_array.each_slice(30) do |chunk| # 在这里处理每一组30个元素的chunk # 比如打印当前组的元素数量:puts "当前组元素数:#{chunk.size}" end
如果是在Rails项目中,也可以用in_groups_of,但each_slice不需要依赖Rails,适用性更广。
问题2:将234个元素的数组按每10项分页
你用in_groups_of没成功,应该是默认行为导致的——这个方法会自动用nil填充最后一组,让每组元素数都等于指定的10个,而你需要的是保留实际剩余元素的分组。
推荐用each_slice,它不会填充额外元素,完全符合分页需求:
# 模拟你的234个元素产品数组 products = Array.new(234) { |i| "产品#{i+1}" } # 按每10项分组 paginated_products = products.each_slice(10).to_a
执行后paginated_products的结构和你给出的示例一致:前23组各包含10个元素,最后一组包含4个剩余元素。
如果一定要用Rails的in_groups_of,可以传入第二个参数false来禁用填充:
# 仅Rails环境可用 paginated_products = products.in_groups_of(10, false)
这样得到的结果和each_slice完全相同,不会出现多余的nil值。
内容的提问来源于stack exchange,提问作者jujajjjj
相关产品推荐
相关产品推荐

