LoginSignup
5
5

More than 3 years have passed since last update.

配列中の最大値のindexを複数取得する方法

Posted at

記事の概要

 配列が最大値を複数持つ場合にその全ての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メソッドで最大値に合う要素を探し出し取得します。

もっとスマートな方法がある場合は教えていただけると嬉しいです。

5
5
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5