如何枚举数组中的连续元素?

发布于 2024-12-14 02:23:55 字数 258 浏览 0 评论 0原文

例如,我有一个

arr = [1,2,3,4]

如果我调用 arr.each,我将访问:

1
2
3
4

但我想

1 2
2 3
3 4

使用内置函数可以吗?如果不是,最佳实践是什么?

另一个问题:我想要 1 23 4 吗?

For instance, I have a

arr = [1,2,3,4]

If I call arr.each, I will access:

1
2
3
4

But I want

1 2
2 3
3 4

Is it possible with built-in function? If not, what's the best practice?

Another question: if I want 1 2 and 3 4?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

喜爱皱眉﹌ 2024-12-21 02:23:55

您可能想查看 each_cons对于第一种情况:

(1..10).each_cons(3) {|a| p a}
# outputs below
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
[4, 5, 6]
[5, 6, 7]
[6, 7, 8]
[7, 8, 9]
[8, 9, 10]

对于第二种情况(想要元素集),您将使用 each_slice

(1..10).each_slice(3) {|a| p a}
# outputs below
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
[10]

这些方法中的任何一个都接受单个整数指定集合的​​大小,因此您可以指定 2 而不是 3 (示例直接来自文档)。

You probably want to look at each_cons for your first case:

(1..10).each_cons(3) {|a| p a}
# outputs below
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
[4, 5, 6]
[5, 6, 7]
[6, 7, 8]
[7, 8, 9]
[8, 9, 10]

For your second case (wanting sets of elements) you would use each_slice:

(1..10).each_slice(3) {|a| p a}
# outputs below
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
[10]

Either of these methods accepts a single integer specifying the size of the set, so you would specify 2 instead of 3 (examples are straight from the documentation).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文