如何迭代连续元素

Wol*_*Tru 0 ruby arrays

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

鉴于此输入:

array = ['a','b','c','d','e']
Run Code Online (Sandbox Code Playgroud)

我想得到:

[['a','b','c'],['b','c','d'],['c','d','e']]
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

the*_*Man 5

Enumerable 文档是您的朋友:

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

each_cons(n) { ... }

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