在Ruby中,获取数组中最大值索引的最简单方法是什么?

如果a是数组,我想a.index(a.max) ,但更像Ruby。 这应该是显而易见的,但是我很难在其他地方find答案。 显然,我是Ruby的新手。

对于Ruby 1.8.7或更高版本:

 a.each_with_index.max[1] 

它做了一个迭代。 不完全是有史以来最有语义的事情,但是如果你发现自己做了这么多,我会把它包装在一个index_of_max方法中。

在ruby1.9.2我可以做到这一点;

 arr = [4, 23, 56, 7] arr.rindex(arr.max) #=> 2 

这是我想要回答这个问题的:

 a = (1..12).to_a.shuffle # => [8, 11, 9, 4, 10, 7, 3, 6, 5, 12, 1, 2] a.each_index.max_by { |i| a[i] } # => 9 
 a = [1, 4 8] a.inject(a[0]) {|max, item| item > max ? item : max } 

至less它是ruby般的:)

这是一种获取最大值的所有索引值的方法,如果不止一个。

鉴于:

 > a => [1, 2, 3, 4, 5, 6, 7, 9, 9, 2, 3] 

您可以通过以下方式find所有最大值(或任何给定值)的索引:

 > a.each_with_index.select {|e, i| e==a.max}.map &:last => [7, 8]