如何从可变长度数组中获取可变长度数组的指定子集?

时间:2011-06-21 20:41:50

标签: ruby arrays function

我有一组长度为n的可变对象。由我的数据库中的记录数定义。

我需要一个函数来获取指定长度为m的数组的子集(保持对象按顺序并始终从索引0开始),其中m可以是我传入的任何整数。

e.g。如果n = 10且m = 4

数组foo = [0,1,2,3,4,5,6,7,8,9]

子集a = [0,1,2,3] 子集b = [4,5,6,7] 子集c = [8,9]

所以,我需要以编程方式能够说,“给定数组长度为n的长度为m的第i个子集。”使用前面的例子:“给我来自foo的长度为4的第二个子集”=>返回位置[4,5,6,7]的项目。

我希望这是有道理的。非常感谢协助红宝石解决方案! THX!

2 个答案:

答案 0 :(得分:3)

   foo.each_slice(subset_length).to_a[subset_index]

e.g。 foo.each_slice(4).to_a[2]返回“来自foo的长度为4的第二个子集”。

答案 1 :(得分:2)

您可以使用Enumerable#each_slice

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9].each_slice(4).to_a
#=> [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9]]