Я просто хотел отметить разницу в поведении и производительности для некоторых решений здесь. Поведение «разрыва связи» дубликатов макс. Элементов:
a = [3,1,2,3]
a.each_with_index.max[1]
# => 3
a.index(a.max)
# => 0
Из любопытства я запустил их обоих в Benchmark.bm
(для a
выше):
user system total real
each_with_index.max 0.000000 0.000000 0.000000 ( 0.000011)
index.max 0.000000 0.000000 0.000000 ( 0.000003)
Затем я сгенерировал новый a
с помощью Array.new(10_000_000) { Random.rand }
и перезапустил тест:
user system total real
each_with_index.max
2.790000 0.000000 2.790000 ( 2.792399)
index.max 0.470000 0.000000 0.470000 ( 0.467348)
Это заставляет меня задуматься, если вам не нужно специально выбирать более высокий индекс max, a.index(a.max)
- лучший выбор.