#記事の概要
配列が最大値を複数持つ場合にその全てのindexを取得する方法です。
以下の配列を例に話を進めます。
a=[2,2,1]
この配列から最大値2を持つインデックス0、1を取得するのがゴールです。
#Array#indexメソッド
配列から条件に合うindexを取得するメソッドですが....
a.index(a.max)
=> 0
最初に引数に合致するindexしか取得できません。
#each_indexとselectを組み合わせる
結論から言うとこうするとできました。
a.each_index.select{|i|a[i]==a.max}
=> [0, 1]
each_indexは配列からindexだけ取り出して渡します。渡されたindexを元にselectメソッドで最大値に合う要素を探し出し取得します。
もっとスマートな方法がある場合は教えていただけると嬉しいです。