Ruby抓取匹配条件的数组的第一个元素的索引

时间:2013-01-25 23:05:08

标签: ruby arrays indexing

我遇到了这个问题,我想知道是否有更好的方法来做到这一点。

给定数组:

options = [
  SelectItem.new(-1, "String 1"),
  SelectItem.new(0, "String 2"),
  SelectItem.new(7, "String 3"),
  SelectItem.new(14, "String 4")
]

获取符合特定条件的第一个元素的索引的最佳方法是什么?

我的解决方案是:

my_index = 0
options.each_with_index do |o, index|
  if o.value == some_value
    my_index = index
    break
  end
end

还有另一种方法吗? Enumerable#find返回满足条件的第一个对象,但我想要一些返回满足条件的第一个对象的索引。< / p>

2 个答案:

答案 0 :(得分:5)

a=[100,200,300]
a.index{ |x| x%3==0 }   # returns 2

适用于您的情况:

options.index{ |o| o.value == some_value }

答案 1 :(得分:1)

使用Array#index

> a = ['asdf', 'qwer', '1234']
> a.index { |e| e =~ /\d/ }
=> 2