ruby-on-rails – 比every_slice更平衡的数组操作?
发布时间:2020-12-17 02:15:57 所属栏目:百科 来源:网络整理
导读:我有一个包含10个项目的数组,我想将它分成3个部分,如下所示: [1,2,3,4][5,6,7][8,9,10] 使用each_slice,我可以得到关闭: a = *(1..10)a.each_slice(4) # use 4 so I can fit everything into 3 sections[1,7,8][9,10] 但我希望第一种格式更均匀地分布.我可
我有一个包含10个项目的数组,我想将它分成3个部分,如下所示:
[1,2,3,4] [5,6,7] [8,9,10] 使用each_slice,我可以得到关闭: a = *(1..10) a.each_slice(4) # use 4 so I can fit everything into 3 sections [1,7,8] [9,10] 但我希望第一种格式更均匀地分布.我可以写自己的方法.但有没有内置的方法在ruby 1.9中执行此操作? 更新: 由于没有内置方式我想改变我的问题 – 你将如何实现它? 解决方法
这是我的实施
def chunk(a,pieces) size = a.size / pieces extra = a.size % pieces chunks = [] start = 0 1.upto(pieces) do |i| last = (i <= extra) ? size.next : size chunks << a.slice(start,last) start = chunks.flatten.size end chunks end 这样称呼它 a = *(1..10) puts chunk(a,3) 将输出 [1,10] 如果件尺寸太大,则用空阵列填充 a = *(1..10) puts chunk(a,14) 将输出 [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[],[]] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |