如何找到具有最大值的数组的索引

27
我有一个元素数组。如果我执行arr.max,我将获得最大值。但是我想要得到该数组的索引。如何在 Ruby 中找到它?
例如:
a = [3,6,774,24,56,2,64,56,34]
=> [3, 6, 774, 24, 56, 2, 64, 56, 34]
>> a.max
a.max
=> 774

我需要知道在 Ruby 中如何获取数字 774 的索引号,即 2 的位置。


这个问题相当于在https://dev59.com/2UrSa4cB1Zd3GeqPTROh中提出的问题的一部分。 - Andrew Grimm
3个回答

33
a.index(a.max)  should give you want you want

9
这会导致数组被遍历两次。 - sepp2k
1
至少在Python中,使用C语言编写的函数中两次遍历数组比在解释性代码中更聪明地处理要快:http://lemire.me/blog/archives/2011/06/14/the-language-interpreters-are-the-new-machines/ - Lucas Wiman
使用每个元素迭代数组并使用比较来跟踪当前最大值,比这个解决方案更快吗? - srlrs20020

28
在1.8.7+版本中,each_with_index.max将返回一个包含最大元素及其索引的数组:
[3,6,774,24,56,2,64,56,34].each_with_index.max #=> [774, 2]

在1.8.6中,您可以使用enum_for来达到相同的效果:

require 'enumerator'
[3,6,774,24,56,2,64,56,34].enum_for(:each_with_index).max #=> [774, 2]

7

应该可以正常工作

[7,5,10,9,6,8].each_with_index.max

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接