在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]