1

私はこの問題に遭遇し、それを行うためのより良い方法があるかどうか疑問に思っています。

与えられた配列:

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条件を満たす最初のオブジェクトを返しますが、条件を満たす最初のオブジェクトのインデックスを返すものが必要です。

4

2 に答える 2

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

あなたの場合:

options.index{ |o| o.value == some_value }
于 2013-01-25T23:09:00.990 に答える
1

使用するArray#index

> a = ['asdf', 'qwer', '1234']
> a.index { |e| e =~ /\d/ }
=> 2
于 2013-01-25T23:13:21.670 に答える