我正在寻找一个方法来创建一个固定长度的数组(在我的情况下是12),从任何数组中提供它的任意长度(尽管长度总是12或更小)通过重复中的对象顺序。
例如,给定数组a:
a = [1, 2, 3, 4]
我想要回复:
a = [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
另一个例子:
b = ["peach", "plumb", "pear", "apple", "banana", "orange"]
会回来:
b = ["peach", "plumb", "pear", "apple", "banana", "orange", "peach", "plumb", "pear", "apple", "banana", "orange"]
等等。如果给定一个包含12个对象的数组,它将返回相同的数组。
到目前为止,我为实现这一目标而编写的方法非常难看,并且不是非常Rubyish;对别人如何处理这个问题感兴趣。
提前致谢。
答案 0 :(得分:15)
1.8.7& 1.9你可以用Enumerators
做很酷的事情a = [1,2,3,4]
#=> [1,2,3,4]
a.cycle.take 12
#=> [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
答案 1 :(得分:4)
Array.new(12).fill(some_array).flatten[0..11]
答案 2 :(得分:3)
def twelvify array
array += array while array.size < 12
array[0..11]
end
它也有点难看,但它至少是简单的。 : - )
答案 3 :(得分:1)
array * (12/array.size) + array[0, (12 % array.size)]