Ruby遍历数组中的每个元素n次

时间:2018-07-27 11:52:06

标签: ruby

我很难找到一个确切的例子。

如果我有一个包含5个元素的数组。例如。

list = [5, 8, 10, 11, 15]

如果要循环该数组,我想获取该数组的第8个(例如)元素。我不想只复制数组并获取第8个元素,因为nth元素可能会改变

基本上,第8个元素应该是数字10。

有什么干净的方法吗?

5 个答案:

答案 0 :(得分:7)

救援数学

list[(8 % list.length) - 1]

A link关于我们喜欢的模运算符

答案 1 :(得分:2)

这应该做:

def fetch_cycled_at_position(ary, num)
  ary[(num % ary.length) - 1]
end

ary = _
 => [5, 8, 10, 11, 15]

fetch_cycled_at_position(ary, 1)   # Fetch first element
 => 5

fetch_cycled_at_position(ary, 5)   # Fetch 5th element
 => 15

fetch_cycled_at_position(ary, 8)   # Fetch 8th element
 => 10

答案 2 :(得分:2)

您可以使用rotate

[5, 8, 10, 11, 15].rotate(7).first
#=> 10

它是7,因为数组是从零开始的。

答案 3 :(得分:1)

出于好奇,请使用Array#cycle

[5, 8, 10, 11, 15].cycle.take(8).last

这效率很低,但是很花哨。

答案 4 :(得分:0)

我在irb中运行了这些以获取输出,

irb(main):006:0> list = [5, 8, 10, 11, 15]
=> [5, 8, 10, 11, 15]

irb(main):007:0> list[(8 % list.length) - 1]
=> 10

希望它会对您有所帮助。