2017-02-02 4 views
0

私はRuby 2.4を使用しています。私は、配列の最初の非ゼロ要素を検索する場合、私は配列内の最初の非nil要素のインデックスを見つけるにはどうすればよいですか?

a.find { |x| !x.nil? } 

を使用することができますが、どのように私は、最初の非ゼロ要素が発生した場所のインデックスを見つけるのですか?

+0

「[mcve]」をお読みください。質問するとき、問題を示すサンプル入力データが必要です。 –

答えて

4

indexまたはfind_indexのいずれかの方法を使用してください。

a.index { |x| !x.nil? } 

objに==オブジェクトであることを進ように最初のオブジェクトのインデックスを返し。引数の代わりにブロックが与えられた場合、ブロックがtrueを返す最初のオブジェクトのインデックスを返します。一致するものが見つからなければnilを返します。

https://ruby-doc.org/core-2.2.0/Array.html#method-i-find_index

1

プロティップ、あなたは

Found 2 methods for #___ 
- Array#find_index 
- Array#index 

法ソルバーは、以上のすべて力まかせ探索を行うこと

solve { [nil,7,7,nil,nil,nil].___ { |x| !x.nil? } == 1 } 

プリントのような方法を見つけるために、methodsolver宝石を使用することができます受信者クラスのメソッドを呼び出し、ブロックが真であると評価したものを返します。危険な方法を避けるために最善の努力を払っていますが、危険な副作用を引き起こす可能性のあるクラスについては注意が必要です。

関連する問題