如何迭代连续的元素

时间:2016-09-18 23:34:07

标签: arrays ruby

我正在寻找一种类似于Array#combination的方法,但顺序很重要。

鉴于此输入:

array = ['a','b','c','d','e']

我想得到:

[['a','b','c'],['b','c','d'],['c','d','e']]

我正在尝试找到执行此操作的方法:

array = ['a','b','c','d','e']
x,a = 3,[] 

until x > (ary.size) do 
  a += (0.upto(ary.size - x).map{|i|  ary[i..(x-1)+i]} )
  x += 1 
end

1 个答案:

答案 0 :(得分:4)

可枚举文档是您的朋友:

array = ['a','b','c','d','e']
array.each_cons(3).to_a
# => [["a", "b", "c"], ["b", "c", "d"], ["c", "d", "e"]]

each_cons(n) { ... }

  

为每个连续元素数组迭代给定的块。如果没有给出块,则返回枚举器。