作者:小编106 | 来源:互联网 | 2023-05-26 12:08
我需要将一个数组拆分为X个较小的数组。我不在乎较小数组中的元素数量,我只需要从较大数组中创建X数组即可。我一直在做一些阅读,似乎我需要一个类似于rails中的in_groups方法的方法。我现在不使用Rails,只是使用ruby。
1> David Hempy..:
仅需要Rails来获得该功能就太过分了。只需使用each_slice
:
team = ['alice', 'andy', 'bob', 'barry', 'chloe', 'charlie']
=> ["alice", "andy", "bob", "barry", "chloe", "charlie"]
team.each_slice(2).to_a
=> [["alice", "andy"], ["bob", "barry"], ["chloe", "charlie"]]
each_slice
的参数是每个切片中的元素数(可能最后一个切片除外)。由于您要查找X切片,因此可以执行以下操作:
team.each_slice(team.length/X).to_a
这不是完美的,因为如果数组长度不是X的倍数,您将获得一个额外的切片,但会使您陷入困境,您可以根据实际需要从那里进行调整。
由于您说自己不在乎每个中有多少个,因此可以使用length/x
上面的方法,然后检查是否有太多的切片。如果是这样,只需将最后两个切片合并为一个巨型大小的切片。这样可以避免一些繁琐的数学运算或浮点运算。