如何在迭代内部获取匿名数组中的索引值

时间:2014-09-03 16:47:20

标签: ruby arrays indexing iteration

我的问题是:我希望能够获取一个匿名数组,遍历它并在迭代器块内部找出当前元素的索引。

例如,我试图只输出每三个元素。

["foo", "bar", "baz", "bang", "bamph", "foobar", "Hello, Sailor!"].each do |elem|
  if index_of(elem) % 3 == 0 then
    puts elem
  end
end 

(其中index_of是一个不存在的方法,在这里用作占位符来展示我尝试做的事情)

理论上输出应该是:

foo bang Hello, Sailor!

当我命名数组时,这非常简单。但是当它是匿名的时候,我不能很好地按名称引用数组。我尝试过使用self.find_index(elem)以及self.index(elem),但都失败并出现错误:NoMethodError: undefined method '(find_)index' for main:Object

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

使用each_with_index

arr = ["foo", "bar", "baz", "bang", "bamph", "foobar", "Hello, Sailor!"]

arr.each_with_index do |elem, index|
  puts elem if index % 3 == 0
end 

答案 1 :(得分:1)

另一种方式:

arr = ["foo", "bar", "baz", "bang", "bamph", "foobar", "Hello, Sailor!"]

arr.each_slice(3) { |a| puts a.first }
  #=> foo
  #   bang
  #   Hello, Sailor!