首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ruby数组一次访问两个连续的(链接的)元素

Ruby数组一次访问两个连续的(链接的)元素
EN

Stack Overflow用户
提问于 2013-03-28 20:47:46
回答 3查看 5.5K关注 0票数 30

现在,这是数组,

代码语言:javascript
复制
[1,2,3,4,5,6,7,8,9]

我想要,

代码语言:javascript
复制
[1,2],[2,3],[3,4] upto [8,9]

当我这样做时,each_slice(2)我得到,

代码语言:javascript
复制
[[1,2],[3,4]..[8,9]]

我现在正在做这个,

代码语言:javascript
复制
arr.each_with_index do |i,j|
  p [i,arr[j+1]].compact #During your arr.size is a odd number, remove nil.
end

有没有更好的办法?

EN

回答 3

Stack Overflow用户

发布于 2013-03-28 20:49:18

.each_cons做的正是您想要的。

代码语言:javascript
复制
[1] pry(main)> a = [1,2,3,4,5,6,7,8,9]
=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
[2] pry(main)> a.each_cons(2).to_a
=> [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7], [7, 8], [8, 9]]
票数 7
EN

Stack Overflow用户

发布于 2013-03-28 20:49:48

您几乎做对了:)

代码语言:javascript
复制
arr = [1,2,3,4,5,6,7,8,9]
arr.each_cons(2) do |chunk|
  p chunk
end
# >> [1, 2]
# >> [2, 3]
# >> [3, 4]
# >> [4, 5]
# >> [5, 6]
# >> [6, 7]
# >> [7, 8]
# >> [8, 9]
票数 5
EN

Stack Overflow用户

发布于 2018-02-16 20:09:22

如果你想实现你自己的each_cons

代码语言:javascript
复制
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
cons = 2

0.upto(arr.size - cons) do |i|
  p arr[i, cons]
end

输出:

代码语言:javascript
复制
[1, 2]
[2, 3]
[3, 4]
[4, 5]
[5, 6]
[6, 7]
[7, 8]
[8, 9]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15682223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档